oeqa/utils/qemurunner: fix error handling if runqemu exits with an error
* Don't wait for QEMU to start if it's never going to (because runqemu exited with an error) * Don't error out if killing the process fails with "no such process" (we don't care if it's already dead) (From OE-Core rev: 1789b89de6c4642464abadd9f8a4746385e6b4a7) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
7f9b42a90f
commit
a6eb5ec327
|
@ -12,6 +12,7 @@ import signal
|
|||
import re
|
||||
import socket
|
||||
import select
|
||||
import errno
|
||||
|
||||
import logging
|
||||
logger = logging.getLogger("BitBake.QemuRunner")
|
||||
|
@ -104,6 +105,14 @@ class QemuRunner:
|
|||
logger.info("waiting at most %s seconds for qemu pid" % self.runqemutime)
|
||||
endtime = time.time() + self.runqemutime
|
||||
while not self.is_alive() and time.time() < endtime:
|
||||
if self.runqemu.poll():
|
||||
if self.runqemu.returncode:
|
||||
# No point waiting any longer
|
||||
logger.info('runqemu exited with code %d' % self.runqemu.returncode)
|
||||
output = self.runqemu.stdout
|
||||
self.stop()
|
||||
logger.info("Output from runqemu:\n%s" % output.read())
|
||||
return False
|
||||
time.sleep(1)
|
||||
|
||||
if self.is_alive():
|
||||
|
@ -169,7 +178,11 @@ class QemuRunner:
|
|||
|
||||
if self.runqemu:
|
||||
logger.info("Sending SIGTERM to runqemu")
|
||||
os.killpg(self.runqemu.pid, signal.SIGTERM)
|
||||
try:
|
||||
os.killpg(self.runqemu.pid, signal.SIGTERM)
|
||||
except OSError as e:
|
||||
if e.errno != errno.ESRCH:
|
||||
raise
|
||||
endtime = time.time() + self.runqemutime
|
||||
while self.runqemu.poll() is None and time.time() < endtime:
|
||||
time.sleep(1)
|
||||
|
|
Loading…
Reference in New Issue