[gdm] worker: don't block SIGUSR1
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm] worker: don't block SIGUSR1
- Date: Wed, 4 Jun 2014 18:34:31 +0000 (UTC)
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]