From 6bc1ee9e357be64b5c8ea4307ab49f04387c08fe Mon Sep 17 00:00:00 2001 From: Colomban Wendling Date: Mon, 1 Sep 2014 01:21:04 +0200 Subject: [PATCH] worker: really don't block SIGUSR1 The manager process alters the signal mask, so we need to reset it to the expected default value when launching the session as the signal mask is inherited from the parent. https://bugzilla.gnome.org/show_bug.cgi?id=731228 --- daemon/gdm-session-worker.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c index bc50b37..89505c2 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c @@ -1836,6 +1836,7 @@ gdm_session_worker_start_session (GdmSessionWorker *worker, char *home_dir; int stdin_fd = -1, stdout_fd = -1, stderr_fd = -1; gboolean has_journald = FALSE; + sigset_t mask; /* Leak the TTY into the session as stdin so that it stays open * without any races. */ @@ -1950,6 +1951,13 @@ gdm_session_worker_start_session (GdmSessionWorker *worker, */ signal (SIGUSR1, SIG_DFL); + /* + * Reset signal mask to default since it was altered by the + * manager process + */ + sigemptyset (&mask); + sigprocmask (SIG_SETMASK, &mask, NULL); + gdm_session_execute (worker->priv->arguments[0], worker->priv->arguments, (char **) -- 2.1.0