[gdm] worker: really don't block SIGUSR1



commit abaa3e6cd96ca80560848f17a6a314c8405735d6
Author: Colomban Wendling <ban herbesfolles org>
Date:   Mon Sep 1 01:21:04 2014 +0200

    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 files changed, 8 insertions(+), 0 deletions(-)
---
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 **)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]