Bump to e81f17d.

restore SIGCHLD sighandler to default before spawning a program

From sigaction(2):
A child created via fork(2) inherits a copy of its parent's signal dispositions.
During an execve(2), the dispositions of handled signals are reset to the default;
the dispositions of ignored signals are left unchanged.

This refused to start directly some programs from configuring in config.h:

static Key keys[] = {
	MODKEY,                       XK_o,      spawn,          {.v = cmd } },
};

Some reported programs that didn't start were: mpv, anki, dmenu_extended.

Reported by pfx.
Initial patch suggestion by Storkman.

Ref.
https://git.suckless.org/dwm/commit/e81f17d4c196aaed6893fd4beed49991caa3e2a4.html
This commit is contained in:
bakkeby
2023-04-09 21:53:05 +02:00
parent 5498fed42b
commit ace6f1cd88
2 changed files with 9 additions and 1 deletions

8
dwm.c
View File

@@ -3985,6 +3985,8 @@ void
spawn(const Arg *arg)
#endif // RIODRAW_PATCH
{
struct sigaction sa;
#if RIODRAW_PATCH
pid_t pid;
#endif // RIODRAW_PATCH
@@ -4050,6 +4052,12 @@ spawn(const Arg *arg)
}
#endif // SPAWNCMD_PATCH
setsid();
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
sa.sa_handler = SIG_DFL;
sigaction(SIGCHLD, &sa, NULL);
execvp(((char **)arg->v)[0], (char **)arg->v);
die("dwm: execvp '%s' failed:", ((char **)arg->v)[0]);
}