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`.
This commit is contained in:
parent
9bffa845fa
commit
6613d9f9a1
4
dwm.c
4
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));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue