mirror of
https://github.com/neovim/neovim.git
synced 2026-08-26 00:51:53 +00:00
fix(lifecycle): ignore signals during os_exit
Problem:
SIGTERM received during `os_exit()` can cause it to "nest":
os_exit src/nvim/main.c:720
preserve_exit src/nvim/main.c:910
deadly_signal src/nvim/os/signal.c:205
on_signal src/nvim/os/signal.c:240
signal_event src/nvim/event/signal.c:45
multiqueue_process_events src/nvim/event/multiqueue.c:159
event_teardown src/nvim/main.c:178
os_exit src/nvim/main.c:720
Solution:
Call `signal_reject_deadly()` at the start of `os_exit()` like
`preserve_exit()` already does.
This commit is contained in:
@@ -706,6 +706,8 @@ void os_exit(int r)
|
||||
FUNC_ATTR_NORETURN
|
||||
{
|
||||
exiting = true;
|
||||
// Avoid recursion in case SIGTERM arrives during `os_exit`.
|
||||
signal_reject_deadly();
|
||||
|
||||
if (ui_client_channel_id) {
|
||||
ui_client_stop();
|
||||
|
||||
Reference in New Issue
Block a user