pacho       14/09/29 11:52:45

  Added:                gdm-3.12.2-SIGUSR1-blocking.patch
                        gdm-3.12.2-SIGUSR1-blocking-1.patch
  Removed:              gdm-3.8.4-pam-systemd.patch
                        gdm-3.6.0-selinux-automagic.patch
  Log:
  Don't block SIGUSR1 (#524008 by Serge Gavrilov), drop old
  
  (Portage version: 2.2.12/cvs/Linux x86_64, signed Manifest commit with key 
A188FBD4)

Revision  Changes    Path
1.1                  gnome-base/gdm/files/gdm-3.12.2-SIGUSR1-blocking.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/gnome-base/gdm/files/gdm-3.12.2-SIGUSR1-blocking.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/gnome-base/gdm/files/gdm-3.12.2-SIGUSR1-blocking.patch?rev=1.1&content-type=text/plain

Index: gdm-3.12.2-SIGUSR1-blocking.patch
===================================================================
>From ef6954833cf43bef8306823d7fcfb6a04b903ad7 Mon Sep 17 00:00:00 2001
From: Ray Strode <[email protected]>
Date: Fri, 30 May 2014 10:26:02 -0400
Subject: 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

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 **)
-- 
cgit v0.10.1




1.1                  gnome-base/gdm/files/gdm-3.12.2-SIGUSR1-blocking-1.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/gnome-base/gdm/files/gdm-3.12.2-SIGUSR1-blocking-1.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/gnome-base/gdm/files/gdm-3.12.2-SIGUSR1-blocking-1.patch?rev=1.1&content-type=text/plain

Index: gdm-3.12.2-SIGUSR1-blocking-1.patch
===================================================================
>From abaa3e6cd96ca80560848f17a6a314c8405735d6 Mon Sep 17 00:00:00 2001
From: Colomban Wendling <[email protected]>
Date: Mon, 1 Sep 2014 01:21:04 +0200
Subject: 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

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 **)
-- 
cgit v0.10.1





Reply via email to