summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/qemu.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/scripts/qemu.py b/scripts/qemu.py
index c9bcaafe41..9440261ac3 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -87,6 +87,7 @@ class QEMUMachine(object):
self._socket_scm_helper = socket_scm_helper
self._debug = debug
self._qmp = None
+ self._qemu_full_args = None
def __enter__(self):
return self
@@ -186,13 +187,16 @@ class QEMUMachine(object):
def launch(self):
'''Launch the VM and establish a QMP connection'''
+ self._qemu_full_args = None
devnull = open(os.path.devnull, 'rb')
qemulog = open(self._qemu_log_path, 'wb')
try:
self._pre_launch()
- args = (self._wrapper + [self._binary] + self._base_args() +
- self._args)
- self._popen = subprocess.Popen(args, stdin=devnull, stdout=qemulog,
+ self._qemu_full_args = self._wrapper + [self._binary] +
+ self._base_args() + self._args
+ self._popen = subprocess.Popen(self._qemu_full_args,
+ stdin=devnull,
+ stdout=qemulog,
stderr=subprocess.STDOUT,
shell=False)
self._post_launch()
@@ -212,14 +216,20 @@ class QEMUMachine(object):
self._qmp.close()
except:
self._popen.kill()
+ self._popen.wait()
- exitcode = self._popen.wait()
- if exitcode < 0:
- LOG.warn('qemu received signal %i: %s', -exitcode,
- ' '.join(self._args))
self._load_io_log()
self._post_shutdown()
+ exitcode = self.exitcode()
+ if exitcode is not None and exitcode < 0:
+ msg = 'qemu received signal %i: %s'
+ if self._qemu_full_args:
+ command = ' '.join(self._qemu_full_args)
+ else:
+ command = ''
+ LOG.warn(msg, exitcode, command)
+
def qmp(self, cmd, conv_keys=True, **args):
'''Invoke a QMP command and return the response dict'''
qmp_args = dict()