commit 6613d9f9a1a5630bab30bc2b70bdc793977073ee from: NRK via: Hiltjo Posthuma date: Fri Jul 15 18:53:58 2022 UTC do not call signal-unsafe function inside sighanlder die() calls vprintf, fputc and exit; none of these are async-signal-safe, see `man 7 signal-safety`. commit - 9bffa845faa181fb3afe05f3dc86ad79c80736be commit + 6613d9f9a1a5630bab30bc2b70bdc793977073ee blob - b3c43eeb23a693a4e734a945cdf3aa31a6d51b86 blob + 7c0f9781d44c2db907f059813fbb826b1125da57 --- dwm.c +++ dwm.c @@ -1541,6 +1541,8 @@ setup(void) Atom utf8string; /* clean up any zombies immediately */ + if (signal(SIGCHLD, sigchld) == SIG_ERR) + die("can't install SIGCHLD handler:"); sigchld(0); /* init screen */ @@ -1638,8 +1640,6 @@ showhide(Client *c) void sigchld(int unused) { - if (signal(SIGCHLD, sigchld) == SIG_ERR) - die("can't install SIGCHLD handler:"); while (0 < waitpid(-1, NULL, WNOHANG)); }