gdm r5991 - in trunk: . common daemon gui/simple-greeter
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gdm r5991 - in trunk: . common daemon gui/simple-greeter
- Date: Mon, 10 Mar 2008 23:02:16 +0000 (GMT)
Author: mccann
Date: Mon Mar 10 23:02:15 2008
New Revision: 5991
URL: http://svn.gnome.org/viewvc/gdm?rev=5991&view=rev
Log:
2008-03-10 William Jon McCann <jmccann redhat com>
* common/gdm-signal-handler.c: (signal_io_watch),
(crashlogger_get_backtrace), (gdm_signal_handler_backtrace),
(signal_handler), (gdm_signal_handler_add_fatal):
* common/gdm-signal-handler.h:
* daemon/main.c: (signal_cb), (main):
* gui/simple-greeter/greeter-main.c: (signal_cb), (main):
Don't glog in the signal handlers. Add a default
SIGTRAP handler so we get backtraces in unstable releases.
Modified:
trunk/ChangeLog
trunk/common/gdm-signal-handler.c
trunk/common/gdm-signal-handler.h
trunk/daemon/main.c
trunk/gui/simple-greeter/greeter-main.c
Modified: trunk/common/gdm-signal-handler.c
==============================================================================
--- trunk/common/gdm-signal-handler.c (original)
+++ trunk/common/gdm-signal-handler.c Mon Mar 10 23:02:15 2008
@@ -126,10 +126,12 @@
data = g_hash_table_lookup (handler->priv->id_lookup, l->data);
if (data != NULL) {
- g_debug ("GdmSignalHandler: running %d handler: %p", signum, data->func);
- res = data->func (signum, data->data);
- if (! res) {
- is_fatal = TRUE;
+ if (data->func != NULL) {
+ g_debug ("GdmSignalHandler: running %d handler: %p", signum, data->func);
+ res = data->func (signum, data->data);
+ if (! res) {
+ is_fatal = TRUE;
+ }
}
}
}
@@ -181,7 +183,7 @@
gboolean success = FALSE;
int pid;
- pid = fork();
+ pid = fork ();
if (pid > 0) {
/* Wait for the child to finish */
int estatus;
@@ -193,8 +195,8 @@
}
} else if (pid == 0) {
/* Child process */
- execl (LIBEXECDIR"/gdm-crash-logger",
- LIBEXECDIR"/gdm-crash-logger", NULL);
+ execl (LIBEXECDIR "/gdm-crash-logger",
+ LIBEXECDIR "/gdm-crash-logger", NULL);
}
return success;
@@ -211,7 +213,7 @@
* we get much better information out of it. Otherwise
* fall back to execinfo.
*/
- if (g_stat (LIBEXECDIR"/gdm-crash-logger", &s) == 0) {
+ if (g_stat (LIBEXECDIR "/gdm-crash-logger", &s) == 0) {
fallback = crashlogger_get_backtrace () ? FALSE : TRUE;
}
@@ -239,7 +241,7 @@
case SIGBUS:
case SIGILL:
case SIGABRT:
- g_warning ("Caught signal %d. Generating backtrace...", signo);
+ case SIGTRAP:
gdm_signal_handler_backtrace ();
exit (1);
break;
@@ -247,8 +249,6 @@
case SIGPIPE:
/* let the fatal signals interrupt us */
--in_fatal;
-
- g_warning ("Caught signal %d, shutting down abnormally. Generating backtrace...", signo);
gdm_signal_handler_backtrace ();
ignore = write (signal_pipes [1], &signo_byte, 1);
break;
@@ -333,6 +333,18 @@
return cdata->id;
}
+void
+gdm_signal_handler_add_fatal (GdmSignalHandler *handler)
+{
+ g_return_if_fail (GDM_IS_SIGNAL_HANDLER (handler));
+
+ gdm_signal_handler_add (handler, SIGILL, NULL, NULL);
+ gdm_signal_handler_add (handler, SIGBUS, NULL, NULL);
+ gdm_signal_handler_add (handler, SIGSEGV, NULL, NULL);
+ gdm_signal_handler_add (handler, SIGABRT, NULL, NULL);
+ gdm_signal_handler_add (handler, SIGTRAP, NULL, NULL);
+}
+
static void
callback_data_free (CallbackData *d)
{
Modified: trunk/common/gdm-signal-handler.h
==============================================================================
--- trunk/common/gdm-signal-handler.h (original)
+++ trunk/common/gdm-signal-handler.h Mon Mar 10 23:02:15 2008
@@ -56,6 +56,7 @@
void gdm_signal_handler_set_main_loop (GdmSignalHandler *handler,
GMainLoop *main_loop);
+void gdm_signal_handler_add_fatal (GdmSignalHandler *handler);
guint gdm_signal_handler_add (GdmSignalHandler *handler,
int signal_number,
GdmSignalHandlerFunc callback,
Modified: trunk/daemon/main.c
==============================================================================
--- trunk/daemon/main.c (original)
+++ trunk/daemon/main.c Mon Mar 10 23:02:15 2008
@@ -442,15 +442,6 @@
ret = TRUE;
switch (signo) {
- case SIGSEGV:
- case SIGBUS:
- case SIGILL:
- case SIGABRT:
- g_debug ("Caught signal %d.", signo);
-
- ret = FALSE;
- break;
-
case SIGFPE:
case SIGPIPE:
/* let the fatal signals interrupt us */
@@ -624,14 +615,11 @@
signal_handler = gdm_signal_handler_new ();
gdm_signal_handler_set_main_loop (signal_handler, main_loop);
+ gdm_signal_handler_add_fatal (signal_handler);
gdm_signal_handler_add (signal_handler, SIGTERM, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGINT, signal_cb, NULL);
- gdm_signal_handler_add (signal_handler, SIGILL, signal_cb, NULL);
- gdm_signal_handler_add (signal_handler, SIGBUS, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGFPE, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGHUP, signal_cb, NULL);
- gdm_signal_handler_add (signal_handler, SIGSEGV, signal_cb, NULL);
- gdm_signal_handler_add (signal_handler, SIGABRT, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGUSR1, signal_cb, NULL);
if (do_timed_exit) {
Modified: trunk/gui/simple-greeter/greeter-main.c
==============================================================================
--- trunk/gui/simple-greeter/greeter-main.c (original)
+++ trunk/gui/simple-greeter/greeter-main.c Mon Mar 10 23:02:15 2008
@@ -231,15 +231,6 @@
ret = TRUE;
switch (signo) {
- case SIGSEGV:
- case SIGBUS:
- case SIGILL:
- case SIGABRT:
- g_debug ("Caught signal %d.", signo);
-
- ret = FALSE;
- break;
-
case SIGFPE:
case SIGPIPE:
/* let the fatal signals interrupt us */
@@ -327,14 +318,11 @@
gtk_init (&argc, &argv);
signal_handler = gdm_signal_handler_new ();
+ gdm_signal_handler_add_fatal (signal_handler);
gdm_signal_handler_add (signal_handler, SIGTERM, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGINT, signal_cb, NULL);
- gdm_signal_handler_add (signal_handler, SIGILL, signal_cb, NULL);
- gdm_signal_handler_add (signal_handler, SIGBUS, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGFPE, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGHUP, signal_cb, NULL);
- gdm_signal_handler_add (signal_handler, SIGSEGV, signal_cb, NULL);
- gdm_signal_handler_add (signal_handler, SIGABRT, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGUSR1, signal_cb, NULL);
session = gdm_greeter_session_new ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]