]> git.eshelyaron.com Git - emacs.git/commitdiff
Do not use SA_NODEFER.
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 23 Sep 2012 17:05:14 +0000 (10:05 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 23 Sep 2012 17:05:14 +0000 (10:05 -0700)
Problem reported by Dani Moncayo in
<http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00557.html>.
* alloc.c (die):
* sysdep.c (emacs_abort): Do not reset signal handler.
* emacs.c (terminate_due_to_signal): Reset signal handler here.
* sysdep.c (init_signals): Do not use SA_NODEFER.  It wasn't
wanted even on POSIXish hosts, and it doesn't work on Windows.

src/ChangeLog
src/alloc.c
src/emacs.c
src/sysdep.c

index 0448dab3cabf31d3f40f508805251798626d8c9d..9300f8b726469190b294ce64d60403fd5b960851 100644 (file)
@@ -1,3 +1,14 @@
+2012-09-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Do not use SA_NODEFER.
+       Problem reported by Dani Moncayo in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00557.html>.
+       * alloc.c (die):
+       * sysdep.c (emacs_abort): Do not reset signal handler.
+       * emacs.c (terminate_due_to_signal): Reset signal handler here.
+       * sysdep.c (init_signals): Do not use SA_NODEFER.  It wasn't
+       wanted even on POSIXish hosts, and it doesn't work on Windows.
+
 2012-09-23  Jan Djärv  <jan.h.d@swipnet.se>
 
        * xterm.c (x_term_init): Call fixup_locale before and after calling
index 3c60f685d0875d7646f21c24ab981f82958af806..923e8736a863645888ae210817622630f12469c5 100644 (file)
@@ -6393,7 +6393,6 @@ bool suppress_checking;
 void
 die (const char *msg, const char *file, int line)
 {
-  signal (SIGABRT, SIG_DFL);
   fprintf (stderr, "\r\n%s:%d: Emacs fatal error: %s\r\n",
           file, line, msg);
   terminate_due_to_signal (SIGABRT, INT_MAX);
index eb83a0ae9a85db1413af459f6edcb5fb6157ee5b..cf3d50b4f86ca5bf2a71e88bf933b873a4d30dba 100644 (file)
@@ -285,6 +285,7 @@ static void *ns_pool;
 _Noreturn void
 terminate_due_to_signal (int sig, int backtrace_limit)
 {
+  signal (sig, SIG_DFL);
   totally_unblock_input ();
 
   /* If fatal error occurs in code below, avoid infinite recursion.  */
index dc7f6c2ad56eeaf61064d06373d2b9c2d2439ff3..f4e055c31a0478067dca941567c4fbc7e06613c9 100644 (file)
@@ -1763,7 +1763,7 @@ init_signals (bool dumping)
 
   sigfillset (&process_fatal_action.sa_mask);
   process_fatal_action.sa_handler = deliver_fatal_signal;
-  process_fatal_action.sa_flags = emacs_sigaction_flags () | SA_NODEFER;
+  process_fatal_action.sa_flags = emacs_sigaction_flags ();
 
   sigfillset (&thread_fatal_action.sa_mask);
   thread_fatal_action.sa_handler = deliver_fatal_thread_signal;
@@ -2044,7 +2044,6 @@ emacs_backtrace (int backtrace_limit)
 void
 emacs_abort (void)
 {
-  signal (SIGABRT, SIG_DFL);
   terminate_due_to_signal (SIGABRT, 10);
 }
 #endif