summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Cameron <brian.cameron@sun.com>2005-10-28 22:16:46 +0000
committerBrian Cameron <bcameron@src.gnome.org>2005-10-28 22:16:46 +0000
commit3b26f65507e4c44efd1b1408f5c652c9b625e397 (patch)
treee46a5c3afe4e64382d3f6eacbe9d9ae14635c727
parentc0b3ed33c31ef4e1fe54645009af4f3d56a78c38 (diff)
downloadgdm-3b26f65507e4c44efd1b1408f5c652c9b625e397.tar.gz
If the slave doesn't respond to a SIGTERM, try SIGKILL the second time.
2005-10-28 Brian Cameron <brian.cameron@sun.com> * daemon/display.c: If the slave doesn't respond to a SIGTERM, try SIGKILL the second time. GDM has a problem where it will sometimes stop managing a display because it just keeps waiting for a slave to die after sending it a SIGTERM. Some users have found that this patch works around the problem of a child ignoring SIGTERM. Patch provided by Vaclav Smilauer <eudoxos@arcig.cz>. Fixes bug #113902.
-rw-r--r--ChangeLog13
-rw-r--r--daemon/display.c4
2 files changed, 15 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index dbd130c3..b389ac28 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2005-10-28 Brian Cameron <brian.cameron@sun.com>
+
+ * daemon/display.c: If the slave doesn't
+ respond to a SIGTERM, try SIGKILL the second
+ time. GDM has a problem where it will
+ sometimes stop managing a display because
+ it just keeps waiting for a slave to die
+ after sending it a SIGTERM. Some users
+ have found that this patch works around
+ the problem of a child ignoring SIGTERM.
+ Patch provided by Vaclav Smilauer
+ <eudoxos@arcig.cz>. Fixes bug #113902.
+
2005-10-28 Brian Cameron <brian.cameron@sun.com.
* gui/gdmlogin.c,
diff --git a/daemon/display.c b/daemon/display.c
index a0659951..29e5f76b 100644
--- a/daemon/display.c
+++ b/daemon/display.c
@@ -205,9 +205,9 @@ wait_again:
ve_signal_was_notified (SIGINT) ||
ve_signal_was_notified (SIGHUP) ||
t + 10 <= time (NULL)) {
- gdm_debug ("whack_old_slave: GOT ANOTHER SIGTERM (or it was 10 secs already), killing slave again");
+ gdm_debug ("whack_old_slave: GOT ANOTHER SIGTERM (or it was 10 secs already), killing slave again with SIGKILL");
t = time (NULL);
- kill (d->slavepid, SIGTERM);
+ kill (d->slavepid, SIGKILL);
goto wait_again;
} else if (ret < 0 && errno == EINTR) {
goto wait_again;