emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 51d475a: Avoid endless loop when handling fatal sig


From: Jan D.
Subject: [Emacs-diffs] master 51d475a: Avoid endless loop when handling fatal signal.
Date: Fri, 20 Feb 2015 07:46:53 +0000

branch: master
commit 51d475a8d8a07e0edec92addd4bf96eb1be23b48
Author: Jan Djärv <address@hidden>
Commit: Jan Djärv <address@hidden>

    Avoid endless loop when handling fatal signal.
    
    * src/emacs.c (terminate_due_to_signal): Move totally_unblock_input after
    setting fatal_error_in_progress, so gobble_input and *read_socket are
    not read if there are pending_signals.
---
 src/ChangeLog |    6 ++++++
 src/emacs.c   |    2 +-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 1126dde..dc33e41 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2015-02-20  Jan Djärv  <address@hidden>
+
+       * emacs.c (terminate_due_to_signal): Move totally_unblock_input after
+       setting fatal_error_in_progress, so gobble_input and *read_socket are
+       not read if there are pending_signals.
+
 2015-02-20  Paul Eggert  <address@hidden>
 
        Simplify binary I/O configuration
diff --git a/src/emacs.c b/src/emacs.c
index f933eb1..5905799 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -345,13 +345,13 @@ _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.  */
   if (! fatal_error_in_progress)
     {
       fatal_error_in_progress = 1;
 
+      totally_unblock_input ();
       if (sig == SIGTERM || sig == SIGHUP || sig == SIGINT)
         Fkill_emacs (make_number (sig));
 



reply via email to

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