diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/qemu.py | 24 |
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() |