From nobody Sun May 5 07:16:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1516352588516735.3785353174505; Fri, 19 Jan 2018 01:03:08 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 306727855C; Fri, 19 Jan 2018 09:03:06 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 623005D75E; Fri, 19 Jan 2018 09:03:04 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 99BCC18033D9; Fri, 19 Jan 2018 09:03:00 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w0J92we1022680 for ; Fri, 19 Jan 2018 04:02:58 -0500 Received: by smtp.corp.redhat.com (Postfix) id C0FF25D75E; Fri, 19 Jan 2018 09:02:58 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.2.192]) by smtp.corp.redhat.com (Postfix) with ESMTP id F1CF15D6B2; Fri, 19 Jan 2018 09:02:55 +0000 (UTC) From: Michal Privoznik To: libvir-list@redhat.com Date: Fri, 19 Jan 2018 10:02:45 +0100 Message-Id: <4dd0131cbd49eec61983c4a548e5c18c6f04b89b.1516352565.git.mprivozn@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Cc: harrykas@gmail.com, jtomko@redhat.com Subject: [libvirt] [PATCH] qemu: Don't send any monitor commands afer SHUTDOWN event X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Fri, 19 Jan 2018 09:03:07 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" After aeda1b8c56dc5 we tried to stop reporting I/O errors on expected monitor HUP. We've achieved that by not setting mon->lastError once we've received SHUTDOWN event. However, this makes us to deadlock in case there's thread that enters the monitor after the event is received. The problem is, we're no longer setting mon->lastError and therefore qemuMonitorSend() does not return early and continues execution until virCondWait() (which will never wake up). Signed-off-by: Michal Privoznik --- src/qemu/qemu_monitor.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 85c7d68a1..9f3e3eb14 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -1063,7 +1063,7 @@ qemuMonitorSend(qemuMonitorPtr mon, { int ret =3D -1; =20 - /* Check whether qemu quit unexpectedly */ + /* Check whether qemu quit unexpectedly, */ if (mon->lastError.code !=3D VIR_ERR_OK) { VIR_DEBUG("Attempt to send command while error is set %s", NULLSTR(mon->lastError.message)); @@ -1071,6 +1071,12 @@ qemuMonitorSend(qemuMonitorPtr mon, return -1; } =20 + /* or expectedly. */ + if (mon->willhangup) { + VIR_DEBUG("Attempt to send command while domain is shutting down"); + return -1; + } + mon->msg =3D msg; qemuMonitorUpdateWatch(mon); =20 --=20 2.13.6 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list