Home | History | Annotate | Download | only in patches
      1  16912  mattman /jds/bin/diff -uprN bug-buddy-2.25.2.old/gnome-breakpad/gnome-breakpad.cc bug-buddy-2.25.2/gnome-breakpad/gnome-breakpad.cc
      2  16912  mattman --- bug-buddy-2.25.2.old/gnome-breakpad/gnome-breakpad.cc	2008-12-11 12:57:57.762310000 +0000
      3  16912  mattman +++ bug-buddy-2.25.2/gnome-breakpad/gnome-breakpad.cc	2008-12-11 13:11:10.651856000 +0000
      4  16912  mattman @@ -32,6 +32,7 @@
      5  12039  mattman  #include <sys/stat.h>
      6  12039  mattman  #include <fcntl.h>
      7  12039  mattman  #include <signal.h>
      8  12039  mattman +#include <dlfcn.h>
      9  12039  mattman  #include <sys/wait.h>
     10  12039  mattman  
     11  12039  mattman  #include <glib.h>
     12  16912  mattman @@ -494,6 +495,7 @@ check_if_gdb ()
     13  12207  mattman  int
     14  12207  mattman  gtk_module_init (int *argc, char** argv[])
     15  12207  mattman  {
     16  15576  mattman +    void *handle;
     17  12207  mattman  	bugbuddy = g_find_program_in_path ("bug-buddy");
     18  12207  mattman  	
     19  12207  mattman  	if (bugbuddy && !g_getenv ("GNOME_DISABLE_CRASH_DIALOG")) {
     20  16912  mattman @@ -503,35 +505,40 @@ gtk_module_init (int *argc, char** argv[
     21  16912  mattman  						NULL, NULL, false);
     22  16912  mattman  #endif
     23  12207  mattman  
     24  16912  mattman -        	static struct sigaction *setptr;
     25  16912  mattman -        	static struct sigaction old_action;
     26  16912  mattman -        	struct sigaction sa;
     27  16912  mattman +        static struct sigaction *setptr;
     28  16912  mattman +       	static struct sigaction old_action;
     29  16912  mattman +       	struct sigaction sa;
     30  16912  mattman                  memset(&sa, 0, sizeof(sa));
     31  16912  mattman                  setptr = &sa;
     32  12039  mattman  
     33  16912  mattman -                sa.sa_handler = bugbuddy_segv_handle;
     34  16912  mattman +        sa.sa_handler = bugbuddy_segv_handle;
     35  16912  mattman  
     36  12207  mattman -                sigaction(SIGSEGV, NULL, &old_action);
     37  12207  mattman -		if (old_action.sa_handler == SIG_DFL)
     38  12207  mattman -                	sigaction(SIGSEGV, setptr, NULL);
     39  12207  mattman -
     40  12207  mattman -                sigaction(SIGABRT, NULL, &old_action);
     41  12207  mattman -		if (old_action.sa_handler == SIG_DFL)
     42  12207  mattman -                	sigaction(SIGABRT, setptr, NULL);
     43  12207  mattman -
     44  12207  mattman -                sigaction(SIGTRAP, NULL, &old_action);
     45  12207  mattman -		if (old_action.sa_handler == SIG_DFL)
     46  12207  mattman -                	sigaction(SIGTRAP, setptr, NULL);
     47  12207  mattman -
     48  12207  mattman -                sigaction(SIGFPE, NULL, &old_action);
     49  12207  mattman -		if (old_action.sa_handler == SIG_DFL)
     50  12207  mattman -                	sigaction(SIGFPE, setptr, NULL);
     51  12207  mattman -
     52  12207  mattman -                sigaction(SIGBUS, NULL, &old_action);
     53  12207  mattman -		if (old_action.sa_handler == SIG_DFL)
     54  12207  mattman -                	sigaction(SIGBUS, setptr, NULL);
     55  16912  mattman +        if ((handle = dlopen ("libjsig.so", RTLD_LAZY)) == NULL) {
     56  16912  mattman +            sigaction(SIGSEGV, NULL, &old_action);
     57  16912  mattman +		    if (old_action.sa_handler == SIG_DFL)
     58  16912  mattman +                sigaction(SIGSEGV, setptr, NULL);
     59  12207  mattman +
     60  16912  mattman +            sigaction(SIGABRT, NULL, &old_action);
     61  16912  mattman +		    if (old_action.sa_handler == SIG_DFL)
     62  16912  mattman +                sigaction(SIGABRT, setptr, NULL);
     63  12207  mattman +
     64  16912  mattman +            sigaction(SIGTRAP, NULL, &old_action);
     65  16912  mattman +		    if (old_action.sa_handler == SIG_DFL)
     66  16912  mattman +                sigaction(SIGTRAP, setptr, NULL);
     67  12207  mattman +
     68  16912  mattman +            sigaction(SIGFPE, NULL, &old_action);
     69  16912  mattman +		    if (old_action.sa_handler == SIG_DFL)
     70  16912  mattman +                sigaction(SIGFPE, setptr, NULL);
     71  12207  mattman +
     72  16912  mattman +            sigaction(SIGBUS, NULL, &old_action);
     73  16912  mattman +		    if (old_action.sa_handler == SIG_DFL)
     74  16912  mattman +                sigaction(SIGBUS, setptr, NULL);
     75  16912  mattman +
     76  16912  mattman +		    old_handler = g_log_set_default_handler (bug_buddy_log_handler, NULL);
     77  16912  mattman +        } else {
     78  16912  mattman +            dlclose (handle);
     79  16912  mattman +        }
     80  16912  mattman  
     81  16912  mattman -		old_handler = g_log_set_default_handler (bug_buddy_log_handler, NULL);
     82  12039  mattman  	}
     83  12207  mattman  	return 0;
     84  15576  mattman  }
     85