]> git.sur5r.net Git - i3/i3/commit
Perform proper cleanup for signals with 'Term' action (#3057)
authorDaniel Mueller <d-e-s-o@users.noreply.github.com>
Wed, 29 Nov 2017 07:29:47 +0000 (23:29 -0800)
committerMichael Stapelberg <stapelberg@users.noreply.github.com>
Wed, 29 Nov 2017 07:29:47 +0000 (23:29 -0800)
commit3e34122de4037b9ddef128e1ed999f0eff71edf6
tree0bc4b5019723070bca32edcb9488ed79b4a9862c
parente4d6458cc31281297da3c1c906b8f321865929cc
Perform proper cleanup for signals with 'Term' action (#3057)

Issue #3049 describes a case where terminating i3 by means of SIGTERM
causes it to leak the runtime directory and all its contents. There are
multiple issues at play: first, any cleanup handlers registered via
atexit are never invoked when a signal terminates the program (see
atexit(3)). Hence, the log SHM log cleanup performed in i3_exit is not
invoked in that case. Second, compared to the shutdown path for the
'exit' command, we do not unlink the UNIX domain socket we create,
causing it to be leaked as well. Third, a handler for SIGTERM is not
registered at all despite handle_signal claiming to be the handler for
all 'Term' signals.
This change addresses all three problems and results in a graceful exit
including cleanup to happen when we receive a signal with the default
action 'Term'. It addresses issue #3049.
src/main.c
testcases/lib/i3test.pm.in
testcases/t/540-sigterm-cleanup.t [new file with mode: 0644]