# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1233748865 0
# Node ID 1b2fdbb337160639d0fb7c5bb3f097bef643dd7c
# Parent 6058887e55d7096f8b32c1f0576c601b080dc879
xend: Delay before SIGKILL qemu
Signed-off-by: Yosuke Iwamatsu <y-iwamatsu@xxxxxxxxxxxxx>
tools/python/xen/xend/image.py | 32 +++++++++++++++++++-------------
1 files changed, 19 insertions(+), 13 deletions(-)
diff -r 6058887e55d7 -r 1b2fdbb33716 tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py Wed Feb 04 12:00:06 2009 +0000
+++ b/tools/python/xen/xend/image.py Wed Feb 04 12:01:05 2009 +0000
@@ -558,24 +558,30 @@ class ImageHandler:
except OSError, exn:
- # Try to reap the child every 100ms for 10s. Then SIGKILL
- for i in xrange(100):
+ # Try to reap the child every 100ms for 10s. Then SIGKILL it.
+ for i in xrange(100):
(p, rv) = os.waitpid(self.pid, os.WNOHANG)
if p == self.pid:
- log.warning("DeviceModel %d took more than 10s "
- "to terminate: sending SIGKILL" % self.pid)
+ except OSError:
+ # This is expected if Xend has been restarted within
+ # the life of this domain. In this case, we can kill
+ # the process, but we can't wait for it because it's
+ # not our child. We continue this loop, and after it is
+ # terminated make really sure the process is going away
+ # (SIGKILL).
+ log.warning("DeviceModel %d took more than 10s "
+ "to terminate: sending SIGKILL" % self.pid)
- except OSError, exn:
- # This is expected if Xend has been restarted within the
- # life of this domain. In this case, we can kill the
- # but we can't wait for it because it's not our child.
- # We just make really sure it's going away (SIGKILL) first.
- os.kill(self.pid, signal.SIGKILL)
+ except OSError:
+ # This happens if the process doesn't exist.
state = xstransact.Remove("/local/domain/0/device-model/%i"
Xen-changelog mailing list