diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2018-11-26 22:14:18 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2018-11-27 01:14:55 +0100 |
commit | 7fdb45e0f8b2dfc367067c62e413dd8082d770d5 (patch) | |
tree | 7bc6ca50659f2e80d0105974a850f9f2f420bc9c /src/nvim/misc1.c | |
parent | 60f845ca55a1b8b11a4eb390b1fed93a79e99ad5 (diff) | |
download | rneovim-7fdb45e0f8b2dfc367067c62e413dd8082d770d5.tar.gz rneovim-7fdb45e0f8b2dfc367067c62e413dd8082d770d5.tar.bz2 rneovim-7fdb45e0f8b2dfc367067c62e413dd8082d770d5.zip |
preserve_exit: Ignore SIGHUP
closes #9274
ref #9028
If stdin closed then read_error_exit calls preserve_exit. Handling
SIGHUP during preserve_exit would cause a premature teardown, and
conflicts with e.g. ui_bridge_stop which waits for TUI to teardown.
Vim ignores SIGHUP in its prepare_to_exit and getout_preserve_modified
routines:
/* Ignore SIGHUP, because a dropped connection causes a read error, which
* makes Vim exit and then handling SIGHUP causes various reentrance
* problems. */
signal(SIGHUP, SIG_IGN);
Diffstat (limited to 'src/nvim/misc1.c')
-rw-r--r-- | src/nvim/misc1.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/nvim/misc1.c b/src/nvim/misc1.c index 4032210213..d8730ea08a 100644 --- a/src/nvim/misc1.c +++ b/src/nvim/misc1.c @@ -52,6 +52,7 @@ #include "nvim/window.h" #include "nvim/os/os.h" #include "nvim/os/shell.h" +#include "nvim/os/signal.h" #include "nvim/os/input.h" #include "nvim/os/time.h" #include "nvim/event/stream.h" @@ -2653,6 +2654,8 @@ void preserve_exit(void) } really_exiting = true; + // Ignore SIGHUP while we are already exiting. #9274 + signal_reject_deadly(); mch_errmsg(IObuff); mch_errmsg("\n"); ui_flush(); |