parent
70cd5e1abf
commit
1397558ad7
@ -0,0 +1,97 @@
|
||||
From 33c73a785c79ecef125a53af29581d09f9ab3733 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Walters <walters@verbum.org>
|
||||
Date: Mon, 1 Feb 2010 13:02:11 -0500
|
||||
Subject: [PATCH] [gconfd] Remove (worse than) useless signal handlers for SEGV, FPE, etc
|
||||
|
||||
Modern operating systems like Fedora tend to include system-wide crash
|
||||
handlers (like ABRT) which operate by processing unhandled crashes
|
||||
(signals such as SIGSEGV). By catching SIGSEGV but actually doing
|
||||
nothing with it, GConf is breaking these crash handlers.
|
||||
|
||||
Delete all of the handlers for signals like SIGFPE, SIGSEGV which can't
|
||||
be treated as recoverable.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=608705
|
||||
---
|
||||
gconf/gconfd.c | 37 -------------------------------------
|
||||
1 files changed, 0 insertions(+), 37 deletions(-)
|
||||
|
||||
diff --git a/gconf/gconfd.c b/gconf/gconfd.c
|
||||
index fe5d18a..38a8423 100644
|
||||
--- a/gconf/gconfd.c
|
||||
+++ b/gconf/gconfd.c
|
||||
@@ -119,8 +119,6 @@ static GConfDatabase* obtain_database (GSList *addresses,
|
||||
static void drop_old_databases (void);
|
||||
static gboolean no_databases_in_use (void);
|
||||
|
||||
-static void gconf_handle_segv (int signum);
|
||||
-
|
||||
/*
|
||||
* Flag indicating that we are shutting down, so return errors
|
||||
* on any attempted operation. We do this instead of unregistering with
|
||||
@@ -431,22 +429,6 @@ signal_handler (int signo)
|
||||
++in_fatal;
|
||||
|
||||
switch (signo) {
|
||||
- /* Fast cleanup only */
|
||||
- case SIGSEGV:
|
||||
-#ifdef SIGBUS
|
||||
- case SIGBUS:
|
||||
-#endif
|
||||
- case SIGILL:
|
||||
- enter_shutdown ();
|
||||
-#ifndef G_OS_WIN32
|
||||
- if (g_getenv ("DISPLAY"))
|
||||
- gconf_handle_segv (signo);
|
||||
-#else
|
||||
- gconf_handle_segv (signo);
|
||||
-#endif
|
||||
- abort ();
|
||||
- break;
|
||||
-
|
||||
case SIGFPE:
|
||||
#ifdef SIGPIPE
|
||||
case SIGPIPE:
|
||||
@@ -844,28 +826,16 @@ main(int argc, char** argv)
|
||||
act.sa_mask = empty_mask;
|
||||
act.sa_flags = 0;
|
||||
sigaction (SIGTERM, &act, NULL);
|
||||
- sigaction (SIGILL, &act, NULL);
|
||||
- sigaction (SIGBUS, &act, NULL);
|
||||
- sigaction (SIGFPE, &act, NULL);
|
||||
sigaction (SIGHUP, &act, NULL);
|
||||
- sigaction (SIGSEGV, &act, NULL);
|
||||
- sigaction (SIGABRT, &act, NULL);
|
||||
sigaction (SIGUSR1, &act, NULL);
|
||||
|
||||
act.sa_handler = SIG_IGN;
|
||||
sigaction (SIGINT, &act, NULL);
|
||||
#else
|
||||
signal (SIGTERM, signal_handler);
|
||||
- signal (SIGILL, signal_handler);
|
||||
-#ifdef SIGBUS
|
||||
- signal (SIGBUS, signal_handler);
|
||||
-#endif
|
||||
- signal (SIGFPE, signal_handler);
|
||||
#ifdef SIGHUP
|
||||
signal (SIGHUP, signal_handler);
|
||||
#endif
|
||||
- signal (SIGSEGV, signal_handler);
|
||||
- signal (SIGABRT, signal_handler);
|
||||
#ifdef SIGUSR1
|
||||
signal (SIGUSR1, signal_handler);
|
||||
#endif
|
||||
@@ -2710,10 +2680,3 @@ client_count (void)
|
||||
return g_hash_table_size (client_table);
|
||||
}
|
||||
|
||||
-
|
||||
-static void
|
||||
-gconf_handle_segv (int signum)
|
||||
-{
|
||||
- return;
|
||||
-}
|
||||
-
|
||||
--
|
||||
1.6.6
|
||||
|
Loading…
Reference in new issue