diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2026-08-19 13:03:01 +0200 |
|---|---|---|
| committer | Justin M. Keyes <justinkz@gmail.com> | 2026-08-19 15:46:58 +0200 |
| commit | 5b1c21f4b89f9afdabf524e55887a9c1c0052069 (patch) | |
| tree | dedf48f0eeb193d7c13d16fa46784131d17a7559 /runtime/lua/vim/range.lua | |
| parent | 9bd18d04f13c999b0fe76222edce376e78d0f0e3 (diff) | |
| download | rneovim-5b1c21f4b89f9afdabf524e55887a9c1c0052069.tar.gz rneovim-5b1c21f4b89f9afdabf524e55887a9c1c0052069.tar.bz2 rneovim-5b1c21f4b89f9afdabf524e55887a9c1c0052069.zip | |
fix(lifecycle): late signal kills Nvim mid-teardown
Problem:
A deadly signal arriving during teardown can kill Nvim while it is
preserving swapfiles. `os_exit()` ignores deadly signals via
`signal_reject_deadly()`, but `signal_teardown()` => `uv_signal_stop()`
resets them to the default behavior, so SIGHUP arriving after that
kills the process:
[Process exited 129] // 128 + SIGHUP
This is a race when closing a pty: kernel sends SIGHUP to foreground
process group *and* the reads return EOF, so `chanclose()` on a TUI job
prepares to exit twice. This means it is unpredictable whether Nvim
exits 1 or is terminated.
Solution:
Ignore deadly signals once the watchers are closed. Only SIGKILL
interrupts it now.
Diffstat (limited to 'runtime/lua/vim/range.lua')
0 files changed, 0 insertions, 0 deletions