[OE-core] [PATCH 2/2] oeqa/utils/qemurunner.py: Be sure to stop qemu-system
mariano.lopez at linux.intel.com
mariano.lopez at linux.intel.com
Fri Jan 13 14:33:55 UTC 2017
From: Mariano Lopez <mariano.lopez at linux.intel.com>
When runqemu fails, qemu-system process would keep running
and won't be killed, setpgrp() was used when runqemu was
a shell script but it seems it doesn't work always with python.
This would kill qemu-system explicity and to avoid leaving
it behind.
Signed-off-by: Mariano Lopez <mariano.lopez at linux.intel.com>
---
meta/classes/testimage.bbclass | 2 ++
meta/lib/oeqa/utils/qemurunner.py | 9 +++++++++
2 files changed, 11 insertions(+)
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass
index 770ec80..7eb4038 100644
--- a/meta/classes/testimage.bbclass
+++ b/meta/classes/testimage.bbclass
@@ -171,6 +171,8 @@ def testimage_main(d):
bb.plain(msg)
else:
bb.fatal("%s - FAILED - check the task log and the ssh log" % pn)
+ except BlockingIOError as err:
+ bb.error('runqemu failed, shutting down...')
finally:
signal.signal(signal.SIGTERM, tc.origsigtermhandler)
target.stop()
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index 6927456..21bc35a 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -296,6 +296,7 @@ class QemuRunner:
def stop(self):
self.stop_thread()
+ self.stop_qemu_system()
if hasattr(self, "origchldhandler"):
signal.signal(signal.SIGCHLD, self.origchldhandler)
if self.runqemu:
@@ -320,6 +321,14 @@ class QemuRunner:
self.qemupid = None
self.ip = None
+ def stop_qemu_system(self):
+ if self.qemupid:
+ try:
+ # qemu-system behaves well and a SIGTERM is enough
+ os.kill(self.qemupid, signal.SIGTERM)
+ except ProcessLookupError as e:
+ logger.warn('qemu-system ended unexpectedly')
+
def stop_thread(self):
if self.thread and self.thread.is_alive():
self.thread.stop()
--
2.6.6
More information about the Openembedded-core
mailing list