From nobody Mon Feb 9 04:03:27 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1500542539600814.7794706189457; Thu, 20 Jul 2017 02:22:19 -0700 (PDT) Received: from localhost ([::1]:36869 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dY7ez-0001Ej-9r for importer@patchew.org; Thu, 20 Jul 2017 05:22:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49045) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dY7dX-0000OZ-3F for qemu-devel@nongnu.org; Thu, 20 Jul 2017 05:20:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dY7dT-0004gJ-U8 for qemu-devel@nongnu.org; Thu, 20 Jul 2017 05:20:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51032) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dY7dT-0004fn-Iq for qemu-devel@nongnu.org; Thu, 20 Jul 2017 05:20:43 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 912B07CE1F for ; Thu, 20 Jul 2017 09:20:42 +0000 (UTC) Received: from t460p.pahim.org.com (ovpn-204-59.brq.redhat.com [10.40.204.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id 38C7317DF0; Thu, 20 Jul 2017 09:20:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 912B07CE1F Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=apahim@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 912B07CE1F From: Amador Pahim To: qemu-devel@nongnu.org Date: Thu, 20 Jul 2017 11:19:01 +0200 Message-Id: <20170720091902.22476-3-apahim@redhat.com> In-Reply-To: <20170720091902.22476-1-apahim@redhat.com> References: <20170720091902.22476-1-apahim@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 20 Jul 2017 09:20:42 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v3 2/3] qemu.py: include debug information on launch error X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, ldoktor@redhat.com, ehabkost@redhat.com, Amador Pahim , armbru@redhat.com, mreitz@redhat.com, crosa@redhat.com, famz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" When launching a VM, if an exception happens and the VM is not initiated, it is useful to see the qemu command line that was executed and the output of that command. Before the patch: >>> VM =3D qemu.QEMUMachine('../aarch64-softmmu/qemu-system-aarch64') >>> VM.launch() Traceback (most recent call last): File "", line 1, in File "qemu.py", line 137, in launch self._post_launch() File "qemu.py", line 121, in _post_launch self._qmp.accept() File "qmp/qmp.py", line 145, in accept self.__sock, _ =3D self.__sock.accept() File "/usr/lib64/python2.7/socket.py", line 206, in accept sock, addr =3D self._sock.accept() socket.timeout: timed out After the patch: >>> VM =3D qemu.QEMUMachine('../aarch64-softmmu/qemu-system-aarch64') >>> VM.launch() Traceback (most recent call last): File "", line 1, in File "qemu.py", line 156, in launch raise RuntimeError(msg) RuntimeError: Error launching VM. Original Exception: Traceback (most recent call last): File "qemu.py", line 138, in launch self._post_launch() File "qemu.py", line 122, in _post_launch self._qmp.accept() File "qmp/qmp.py", line 145, in accept self.__sock, _ =3D self.__sock.accept() File "/usr/lib64/python2.7/socket.py", line 206, in accept sock, addr =3D self._sock.accept() timeout: timed out Command: /usr/bin/qemu-system-aarch64 -chardev socket,id=3Dmon, path=3D/var/tmp/qemu-23958-monitor.sock -mon chardev=3Dmon,mode=3Dcontr= ol -display none -vga none Output: qemu-system-aarch64: No machine specified, and there is no default Use -machine help to list supported machines Also, if the launch() faces an exception, the 'except' now will use args to fill the debug information. So this patch assigns 'args' earlier, assuring it will be available for the 'except'. Signed-off-by: Amador Pahim Reviewed-by: Fam Zheng --- scripts/qemu.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/scripts/qemu.py b/scripts/qemu.py index f0fade32bd..2707ae7f75 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -18,6 +18,7 @@ import os import sys import subprocess import qmp.qmp +import traceback =20 =20 class QEMUMachine(object): @@ -129,17 +130,30 @@ class QEMUMachine(object): '''Launch the VM and establish a QMP connection''' devnull =3D open('/dev/null', 'rb') qemulog =3D open(self._qemu_log_path, 'wb') + args =3D self._wrapper + [self._binary] + self._base_args() + self= .args try: self._pre_launch() - args =3D self._wrapper + [self._binary] + self._base_args() + = self._args self._popen =3D subprocess.Popen(args, stdin=3Ddevnull, stdout= =3Dqemulog, stderr=3Dsubprocess.STDOUT, she= ll=3DFalse) self._post_launch() except: + self._load_io_log() if self.is_running(): self._popen.kill() self._popen.wait() - self._load_io_log() + else: + exc_type, exc_value, exc_traceback =3D sys.exc_info() + msg =3D ('Error launching VM.\n' + 'Original Exception: \n%s' + 'Command:\n%s\n' + 'Output:\n%s\n' % + (''.join(traceback.format_exception(exc_type, + exc_value, + exc_traceback)), + ' '.join(args), + self._iolog)) + self._post_shutdown() + raise RuntimeError(msg) self._post_shutdown() raise =20 --=20 2.13.3