From nobody Sun Feb 8 12:42:47 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1666642177; cv=none; d=zohomail.com; s=zohoarc; b=l0VMqwhAUu8SQi9SmLoTq0E/SfbGAibjgt3u0iy0WLmzWAu4+I4cL9SCj2WSiKE5Ln5MSBVAHEq/aJIGiEeSAHDrxMrWWmYvDgFsOEhN/XQ4cYzGPfwOsRk8G7DtOAioeJqxQ28IA1B69Atyt63KPT3LlctwXp8FTDb6MedCMYQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666642177; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MS2WB3OuClBkor+SjrU1noz6SaDDMVqNca9DcUqvsVA=; b=SNAcMNjgwCLwNqI2Cw6lsRYBilxV7y6jYpMbh7yRDGF7UToJQNUInNS6KOx2YbrTBuAL712gPHhzRlnbR4eUTPYzj+HNjdrGb+QtI7btPgrSdZ2qehHiNVyNK5/s246IvnITLRPj0JwcMOhGdxlpebn0qy4pvbQqzuEVenKJ49Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666642177071948.0991934071463; Mon, 24 Oct 2022 13:09:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1on3WW-0007Gi-9N; Mon, 24 Oct 2022 15:54:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1on3WR-0007Fe-ER for qemu-devel@nongnu.org; Mon, 24 Oct 2022 15:54:08 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1on3WO-0005Hi-2w for qemu-devel@nongnu.org; Mon, 24 Oct 2022 15:54:07 -0400 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-498-ByaMKEOjOnSaLY4eIwoN3A-1; Mon, 24 Oct 2022 15:53:58 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 92D2E3C0ED4F for ; Mon, 24 Oct 2022 19:53:58 +0000 (UTC) Received: from scv.redhat.com (unknown [10.22.11.49]) by smtp.corp.redhat.com (Postfix) with ESMTP id B8FEF1415114; Mon, 24 Oct 2022 19:53:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1666641240; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MS2WB3OuClBkor+SjrU1noz6SaDDMVqNca9DcUqvsVA=; b=Bs7ChsF3tVkeID/iWjvKj732ff8qkZDgP+/4zm28SFkwtV/QkedkzrhzlQTqsAG1Sy4mFf xVIRo5dAMGKZsz9lc/CMT3r0F+IWkVw2fRhD5mC1UWV5m8fiMYTWiy01/bhhBGCD5SnMYm UxY6g1r4+GWqeQPlRRkf5XXfBIESbO8= X-MC-Unique: ByaMKEOjOnSaLY4eIwoN3A-1 From: John Snow To: qemu-devel@nongnu.org Cc: John Snow , Beraldo Leal , Cleber Rosa Subject: [PATCH 1/2] python/machine: Add debug logging to key state changes Date: Mon, 24 Oct 2022 15:53:54 -0400 Message-Id: <20221024195355.860504-2-jsnow@redhat.com> In-Reply-To: <20221024195355.860504-1-jsnow@redhat.com> References: <20221024195355.860504-1-jsnow@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.503, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1666642178915100001 Content-Type: text/plain; charset="utf-8" When key decisions are made about the lifetime of the VM process being managed, there's no log entry. Juxtaposed with the very verbose runstate change logging of the QMP module, machine seems a bit too introverted now. Season the machine.py module with logging statements to taste to help make a tastier soup. Signed-off-by: John Snow --- python/qemu/machine/machine.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/python/qemu/machine/machine.py b/python/qemu/machine/machine.py index 37191f433b2..c467f951d5d 100644 --- a/python/qemu/machine/machine.py +++ b/python/qemu/machine/machine.py @@ -373,6 +373,7 @@ def _post_shutdown(self) -> None: Called to cleanup the VM instance after the process has exited. May also be called after a failed launch. """ + LOG.debug("Cleaning up after VM process") try: self._close_qmp_connection() except Exception as err: # pylint: disable=3Dbroad-except @@ -497,6 +498,7 @@ def _early_cleanup(self) -> None: # for QEMU to exit, while QEMU is waiting for the socket to # become writable. if self._console_socket is not None: + LOG.debug("Closing console socket") self._console_socket.close() self._console_socket =3D None =20 @@ -507,6 +509,7 @@ def _hard_shutdown(self) -> None: :raise subprocess.Timeout: When timeout is exceeds 60 seconds waiting for the QEMU process to terminate. """ + LOG.debug("Performing hard shutdown") self._early_cleanup() self._subp.kill() self._subp.wait(timeout=3D60) @@ -523,6 +526,13 @@ def _soft_shutdown(self, timeout: Optional[int]) -> No= ne: :raise subprocess.TimeoutExpired: When timeout is exceeded waiting= for the QEMU process to terminate. """ + LOG.debug("Attempting graceful termination") + if self._quit_issued: + LOG.debug( + "Anticipating QEMU termination due to prior 'quit' command= , " + "or explicit call to wait()" + ) + self._early_cleanup() =20 if self._qmp_connection: @@ -553,6 +563,10 @@ def _do_shutdown(self, timeout: Optional[int]) -> None: try: self._soft_shutdown(timeout) except Exception as exc: + if isinstance(exc, subprocess.TimeoutExpired): + LOG.debug("Timed out waiting for QEMU process to exit") + LOG.debug("Graceful shutdown failed, " + "falling back to hard shutdown") self._hard_shutdown() raise AbnormalShutdown("Could not perform graceful shutdown") \ from exc @@ -575,6 +589,10 @@ def shutdown(self, if not self._launched: return =20 + LOG.debug("Shutting down VM appliance; timeout=3D%s", timeout) + if hard: + LOG.debug("Caller requests immediate termination of QEMU proce= ss.") + try: if hard: self._user_killed =3D True --=20 2.37.3 From nobody Sun Feb 8 12:42:47 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1666641510; cv=none; d=zohomail.com; s=zohoarc; b=CAWwAmf5DMvsmu53hSuH4RVRxlhEAudAMEnwzrFuPuLYWZB8DdExlGqVKKxeLoO8bML3KzN7ZZu3kw4fJutO8PtSHQYPIy3iKidq6vetrDPACa37gu1gA4k6kuvg2PM5VksPmqnURsNEPAwMUNbM9au6GY/xyi8oNLGnytqJgn4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666641510; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rWuAmlcAUARA/PWwHYCqjlVWwSBzWxJPxKeBK77Zk8k=; b=eQD9Pg07iIMXAQEfPisWK3phRjyPgmE11gH4JjeWxWTmKIoO8mxXD65g0DxvZrPKHAySkbl41Tj9qFecYAqV3kGr512a7KQh5xSauXJ3ji4MfvoVv50W5g+6qzCwss/jNnZdDSVVjtSWhn9W28FzVBu0ijQjxErgMDA26pVQuMg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666641510444197.4644180912444; Mon, 24 Oct 2022 12:58:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1on3Wg-0007Mg-AQ; Mon, 24 Oct 2022 15:54:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1on3We-0007Lj-6K for qemu-devel@nongnu.org; Mon, 24 Oct 2022 15:54:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1on3WO-0005J5-DE for qemu-devel@nongnu.org; Mon, 24 Oct 2022 15:54:19 -0400 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-178-0eYCdhULOQ6XR544S4AEfQ-1; Mon, 24 Oct 2022 15:54:01 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B7FD5380673C for ; Mon, 24 Oct 2022 19:54:00 +0000 (UTC) Received: from scv.redhat.com (unknown [10.22.11.49]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1A6681415114; Mon, 24 Oct 2022 19:53:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1666641242; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rWuAmlcAUARA/PWwHYCqjlVWwSBzWxJPxKeBK77Zk8k=; b=Rdn/BL6bgm2D9ypJM9+42mhV4RcCtJi/8FyWke/yVM1Vhrd4u2kSljETOMmpYF7g03mqxP O4Av1ZDw0kjLq8XxtWEaLPLKkN1oC8tjFi6WhsGZmHO8/g4UEgb2w8rR3Az1dabBy1Ddrc mnO3VFBiAKlPZIzOGGPMKuunl+BJm0s= X-MC-Unique: 0eYCdhULOQ6XR544S4AEfQ-1 From: John Snow To: qemu-devel@nongnu.org Cc: John Snow , Beraldo Leal , Cleber Rosa Subject: [PATCH 2/2] python/machine: Handle termination cases without QMP Date: Mon, 24 Oct 2022 15:53:55 -0400 Message-Id: <20221024195355.860504-3-jsnow@redhat.com> In-Reply-To: <20221024195355.860504-1-jsnow@redhat.com> References: <20221024195355.860504-1-jsnow@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.503, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1666641510939100001 Content-Type: text/plain; charset="utf-8" If we request a shutdown of a VM without a QMP console, we'll just hang waiting. Not ideal. Add in code that attempts graceful termination in these cases. Tested lightly; it appears to work and I doubt we rely on this case anywhere, but it's a corner you're allowed to wedge yourself in, so it should be handled. Signed-off-by: John Snow --- python/qemu/machine/machine.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/python/qemu/machine/machine.py b/python/qemu/machine/machine.py index c467f951d5d..e1ba5d01b86 100644 --- a/python/qemu/machine/machine.py +++ b/python/qemu/machine/machine.py @@ -544,6 +544,12 @@ def _soft_shutdown(self, timeout: Optional[int]) -> No= ne: finally: # Regardless, we want to quiesce the connection. self._close_qmp_connection() + elif not self._quit_issued: + LOG.debug( + "Not anticipating QEMU quit and no QMP connection present,= " + "issuing SIGTERM" + ) + self._subp.terminate() =20 # May raise subprocess.TimeoutExpired self._subp.wait(timeout=3Dtimeout) --=20 2.37.3