diff options
author | Brian Cameron <brian.cameron@sun.com> | 2005-10-28 22:16:46 +0000 |
---|---|---|
committer | Brian Cameron <bcameron@src.gnome.org> | 2005-10-28 22:16:46 +0000 |
commit | 3b26f65507e4c44efd1b1408f5c652c9b625e397 (patch) | |
tree | e46a5c3afe4e64382d3f6eacbe9d9ae14635c727 | |
parent | c0b3ed33c31ef4e1fe54645009af4f3d56a78c38 (diff) | |
download | gdm-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-- | ChangeLog | 13 | ||||
-rw-r--r-- | daemon/display.c | 4 |
2 files changed, 15 insertions, 2 deletions
@@ -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; |