diff --git a/src/weston-launch.c b/src/weston-launch.c index 8d8a903e..e2d2d327 100644 --- a/src/weston-launch.c +++ b/src/weston-launch.c @@ -542,6 +542,7 @@ static void launch_compositor(struct weston_launch *wl, int argc, char *argv[]) { char *child_argv[MAX_ARGV_SIZE]; + sigset_t allsigs; int i; if (wl->verbose) @@ -556,6 +557,13 @@ launch_compositor(struct weston_launch *wl, int argc, char *argv[]) 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[1] = "-l"; child_argv[2] = "-c";