mirror of
https://git.yoctoproject.org/poky-contrib
synced 2025-05-08 23:52:25 +08:00
qemurunner: Fix a bug with fork/exit handling
If you send this forked process a SIGTERM, it will execute all of the parent's exit code leading to two sets of console/exit output which is extremely confusing. Wrap the code in a try/finally to ensure we always call os._exit() to avoid this. I spent far too long trying to work out the crazy console output from this. (From OE-Core rev: 652e40bfae24b8e23bbf7a7f35d900d2ab8d0f92) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
171da2fa9c
commit
ab830b19ee
@ -267,12 +267,15 @@ class QemuRunner:
|
||||
self.monitorpipe = os.fdopen(w, "w")
|
||||
else:
|
||||
# child process
|
||||
os.setpgrp()
|
||||
os.close(w)
|
||||
r = os.fdopen(r)
|
||||
x = r.read()
|
||||
os.killpg(os.getpgid(self.runqemu.pid), signal.SIGTERM)
|
||||
os._exit(0)
|
||||
try:
|
||||
os.setpgrp()
|
||||
os.close(w)
|
||||
r = os.fdopen(r)
|
||||
x = r.read()
|
||||
os.killpg(os.getpgid(self.runqemu.pid), signal.SIGTERM)
|
||||
finally:
|
||||
# We must exit under all circumstances
|
||||
os._exit(0)
|
||||
|
||||
self.logger.debug("runqemu started, pid is %s" % self.runqemu.pid)
|
||||
self.logger.debug("waiting at most %d seconds for qemu pid (%s)" %
|
||||
|
Loading…
x
Reference in New Issue
Block a user