Index: gnome-breakpad.cc
===================================================================
--- gnome-breakpad.cc	(revision 2429)
+++ gnome-breakpad.cc	(working copy)
@@ -295,17 +295,32 @@
 						MinidumpCallback, NULL, true);
 #else
         	static struct sigaction *setptr;
+        	static struct sigaction old_action;
         	struct sigaction sa;
                 memset(&sa, 0, sizeof(sa));
                 setptr = &sa;
 
                 sa.sa_handler = bugbuddy_segv_handle;
 
-                sigaction(SIGSEGV, setptr, NULL);
-                sigaction(SIGABRT, setptr, NULL);
-                sigaction(SIGTRAP, setptr, NULL);
-                sigaction(SIGFPE, setptr, NULL);
-                sigaction(SIGBUS, setptr, NULL);
+                sigaction(SIGSEGV, NULL, &old_action);
+		if (old_action.sa_handler == SIG_DFL)
+                	sigaction(SIGSEGV, setptr, NULL);
+
+                sigaction(SIGABRT, NULL, &old_action);
+		if (old_action.sa_handler == SIG_DFL)
+                	sigaction(SIGABRT, setptr, NULL);
+
+                sigaction(SIGTRAP, NULL, &old_action);
+		if (old_action.sa_handler == SIG_DFL)
+                	sigaction(SIGTRAP, setptr, NULL);
+
+                sigaction(SIGFPE, NULL, &old_action);
+		if (old_action.sa_handler == SIG_DFL)
+                	sigaction(SIGFPE, setptr, NULL);
+
+                sigaction(SIGBUS, NULL, &old_action);
+		if (old_action.sa_handler == SIG_DFL)
+                	sigaction(SIGBUS, setptr, NULL);
 #endif
 	}
   
