weston-launch: Unblock our signalfd signals before execing child
Giovanni Campagna ran into this with mutter.
This commit is contained in:
@@ -542,6 +542,7 @@ static void
|
|||||||
launch_compositor(struct weston_launch *wl, int argc, char *argv[])
|
launch_compositor(struct weston_launch *wl, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char *child_argv[MAX_ARGV_SIZE];
|
char *child_argv[MAX_ARGV_SIZE];
|
||||||
|
sigset_t allsigs;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (wl->verbose)
|
if (wl->verbose)
|
||||||
@@ -556,6 +557,13 @@ launch_compositor(struct weston_launch *wl, int argc, char *argv[])
|
|||||||
|
|
||||||
unsetenv("DISPLAY");
|
unsetenv("DISPLAY");
|
||||||
|
|
||||||
|
/* Do not give our signal mask to the new process. */
|
||||||
|
sigemptyset(&mask);
|
||||||
|
sigaddset(&mask, SIGTERM);
|
||||||
|
sigaddset(&mask, SIGCHLD);
|
||||||
|
sigaddset(&mask, SIGINT);
|
||||||
|
sigprocmask(SIG_UNBLOCK, &mask, NULL);
|
||||||
|
|
||||||
child_argv[0] = wl->pw->pw_shell;
|
child_argv[0] = wl->pw->pw_shell;
|
||||||
child_argv[1] = "-l";
|
child_argv[1] = "-l";
|
||||||
child_argv[2] = "-c";
|
child_argv[2] = "-c";
|
||||||
|
|||||||
Reference in New Issue
Block a user