The testsuite already contains quite a number of SIGCHLD handler installation/un-installations. Here is my attempt at an inventary. 1. complete-run.pl installs a SIGCHLD handler in the `start_xserver()` function call, which prints an error and exits when all x server processes have exited. 2. In the TestWorker child process, a SIGCHLD handler is installed to reap dead test child processes. 3. The TestWorker child process forks another child process for running the test file, where the previously installed SIGCHLD handler (point 2) is unset. This is where this commit comes in: it installs a SIGCHLD handler in the test file child process, which will trigger when the i3 subprocess dies. 4. (For completeness: i3test.pm defines an END block where it unsets the previous SIGCHLD handler before it kills the subprocesses.) With this commit, when i3 segfaults, the output will look like this: Writing logfile to 'testsuite-2022-09-10-21-14-46-4.20-103-gb242bceb/complete-run.log'... [:100] /home/michael/i3/testcases/t/167-workspace_layout.t: BAILOUT completed 0 of 1 tests test /home/michael/i3/testcases/t/167-workspace_layout.t bailed out: could not kill i3: No such process fixes https://github.com/i3/i3/issues/4437
i3: A tiling window manager
i3 is a tiling window manager for X11.
For more information about i3, please see the project's website and online documentation.
For information about contributing to i3, please see CONTRIBUTING.md.
Description
Languages
C
58.6%
Perl
29%
Raku
9.4%
Ruby
1.2%
Shell
0.7%
Other
1.1%