weston-launch: Unblock our signalfd signals before execing child
Giovanni Campagna ran into this with mutter.
diff --git a/src/weston-launch.c b/src/weston-launch.c
index 8d8a903..e2d2d32 100644
--- a/src/weston-launch.c
+++ b/src/weston-launch.c
@@ -542,6 +542,7 @@
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 @@
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";