[gdm] worker: don't block SIGUSR1



commit ef6954833cf43bef8306823d7fcfb6a04b903ad7
Author: Ray Strode <rstrode redhat com>
Date:   Fri May 30 10:26:02 2014 -0400

    worker: don't block SIGUSR1
    
    When the slaves were folded into the main manager process, we had
    to add support for detecting multiple simultaneous X servers starting
    up.
    
    We did that by creating a detected thread to listen for SIGUSR1 and
    then examining the siginfo to find out which X server is ready.
    
    In order to ensure only the dedicated thread received the SIGUSR1
    signals from the X server we blocked SIGUSR1 from the main thread.
    
    That blocked signal is inherited to the worker processes and the
    session.  Some programs depend on SIGUSR1 but don't explicitly unblock
    SIGUSR1 at start up, since the signal is presumed to be unblocked out
    the box.
    
    This commit makes sure SIGUSR1 is unblocked before starting the session
    to keep these programs functioning correctly.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=731228

 daemon/gdm-session-worker.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
---
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index 8af97b0..bc50b37 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -1944,6 +1944,12 @@ gdm_session_worker_start_session (GdmSessionWorker  *worker,
                  */
                 signal (SIGPIPE, SIG_DFL);
 
+                /*
+                 * Reset SIGUSR1 to default since it was blocked by the manager
+                 * process for the X server startup handshake
+                 */
+                signal (SIGUSR1, SIG_DFL);
+
                 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]