emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r110166: Do not use SA_NODEFER.


From: Paul Eggert
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r110166: Do not use SA_NODEFER.
Date: Sun, 23 Sep 2012 10:05:14 -0700
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 110166
committer: Paul Eggert <address@hidden>
branch nick: trunk
timestamp: Sun 2012-09-23 10:05:14 -0700
message:
  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.
modified:
  src/ChangeLog
  src/alloc.c
  src/emacs.c
  src/sysdep.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2012-09-23 10:03:35 +0000
+++ b/src/ChangeLog     2012-09-23 17:05:14 +0000
@@ -1,3 +1,14 @@
+2012-09-23  Paul Eggert  <address@hidden>
+
+       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  <address@hidden>
 
        * xterm.c (x_term_init): Call fixup_locale before and after calling

=== modified file 'src/alloc.c'
--- a/src/alloc.c       2012-09-23 08:44:20 +0000
+++ b/src/alloc.c       2012-09-23 17:05:14 +0000
@@ -6393,7 +6393,6 @@
 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);

=== modified file 'src/emacs.c'
--- a/src/emacs.c       2012-09-23 08:44:20 +0000
+++ b/src/emacs.c       2012-09-23 17:05:14 +0000
@@ -285,6 +285,7 @@
 _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.  */

=== modified file 'src/sysdep.c'
--- a/src/sysdep.c      2012-09-23 08:44:20 +0000
+++ b/src/sysdep.c      2012-09-23 17:05:14 +0000
@@ -1763,7 +1763,7 @@
 
   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 @@
 void
 emacs_abort (void)
 {
-  signal (SIGABRT, SIG_DFL);
   terminate_due_to_signal (SIGABRT, 10);
 }
 #endif


reply via email to

[Prev in Thread] Current Thread [Next in Thread]