Browse Source

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`.
master
NRK 2 years ago
committed by Hiltjo Posthuma
parent
commit
6613d9f9a1
1 changed files with 2 additions and 2 deletions
  1. +2
    -2
      dwm.c

+ 2
- 2
dwm.c View File

@ -1541,6 +1541,8 @@ setup(void)
Atom utf8string; Atom utf8string;
/* clean up any zombies immediately */ /* clean up any zombies immediately */
if (signal(SIGCHLD, sigchld) == SIG_ERR)
die("can't install SIGCHLD handler:");
sigchld(0); sigchld(0);
/* init screen */ /* init screen */
@ -1638,8 +1640,6 @@ showhide(Client *c)
void void
sigchld(int unused) sigchld(int unused)
{ {
if (signal(SIGCHLD, sigchld) == SIG_ERR)
die("can't install SIGCHLD handler:");
while (0 < waitpid(-1, NULL, WNOHANG)); while (0 < waitpid(-1, NULL, WNOHANG));
} }


Loading…
Cancel
Save