From nobody Mon Aug 24 09:07:24 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1786003552; cv=none; d=zohomail.com; s=zohoarc; b=KqhEnnULPpfSawcBxpY8ptDoORMGdqwJoU9tqg3bJ7AfMCs80IJDhnt33gYfvB7puCXgEHk5wM1BxXhieVjdoNOUQj3QPxTKVInRxKiif8HKi6b+dJTLYMjOusKo0KfZiy5+xjZqxh9O+kQHCPXojdWOfci44pFoiBtoqy6uetc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786003552; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=vwAvDaQHvLed5e4exTDLAVDMptXflavPAdCOztNp3hw=; b=QguK7/RU/Sfl2DLnDBwhNOLDCOslHImf8BGarjJ3sn7S45EH+WfenfGLByrSSRqCh2TmRY4O6m1Nrnc3n52Dv/w0EUI0wLz5ZRY+PLSMlhVJ/MCX5gJFTYKg/m+WWekPyKstg3la2mBgkhwip24qAW9qAxNYlWr4N8OcnWv81YY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1786003552547224.20038193786934; Thu, 6 Aug 2026 01:05:52 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D6C91417D7; Thu, 6 Aug 2026 04:05:49 -0400 (EDT) Received: from [172.19.199.10] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id D690B41A90; Thu, 6 Aug 2026 04:04:58 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D0D873F875; Thu, 6 Aug 2026 04:04:49 -0400 (EDT) Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 052523F36C for ; Thu, 6 Aug 2026 04:04:49 -0400 (EDT) Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-c2055573c8cso138723466b.3 for ; Thu, 06 Aug 2026 01:04:48 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c203624e6c8sm218564066b.15.2026.08.06.01.04.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 01:04:46 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786003487; x=1786608287; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=vwAvDaQHvLed5e4exTDLAVDMptXflavPAdCOztNp3hw=; b=n0GQBYhjpzV3SANnGAYN+Qcqbo3awSgVRS+Npj2HnyjKVjTFu5BSISjECaUS4fYL4E UVNTprGnlqphLaFuRxmmhKHK57lCJk8ivwSg89e1ME44O2ywImDPgJrFtU9DOCAu0GtW L9LSIJ8tbYjEvuT6cKyYJqLNpbnJz5EOmKGf+Hyyq/arE9WzVIjsSVcYDJomRA4br071 zehH6eHnpp14r7+JPxLhL9no6azAGI8OCQ4Scs6xq2tPcPR/4xsY5pU94AYe+Yuoa59A IqVZaqXZCaoa8jJjI3Hho422XcPljJoYnGltemdtN7FCq6b2rxQPjysPO3yudoTWG6oF Yqow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786003487; x=1786608287; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=vwAvDaQHvLed5e4exTDLAVDMptXflavPAdCOztNp3hw=; b=dM0Yrc3ewCRE++F++92HkrC0/b0uD5hVzVKtYep+6zeqQlnHNJC8MGdI5Mh9r3WJGK aZ4bzlnlz55h0iCuOWfMvFr+rEfYKyE+0kujWZ4TVwKRdMgexeD/6i/9A+CijN0thYlA tqsGll3L8H6V4+VenPHGGGZk8HqqhXlMJ6JTwOFphioK6vyY6YZjuLdZ2ah/63ZHn6yy bDOam9GiUkIEchyRwmqFnwmOkjlSpJmIqSwvjYwhCdOXSltjYImdBa/+n1DI8ITwZzwJ bLTqhPh8zQHpfhgaczOxyr2Z3cecnD+zDTcwys7jEMNQbNJdHNn8fGiS1yPkGPLij+zK vDxA== X-Gm-Message-State: AOJu0YxF22akjspyueJKJ+d0wmvkkQUCKTnT8azACpWDbxbYNNZSrCZM roviajr+X3Ay2jlhchIewpV5vqidnHi/YueL1mpbLJsSN29QvuJmdz4GYd2hYZpF X-Gm-Gg: AR+sD11iaV7xNOWC4vEFCO3FXqPyHvdBpnCT4wCPRfDYQO7rMbCk/j2cdxLP4EIp99r IQ9dgcAwpl28jhcKoKCWO9i7iqfz0KO7JNahUFtGwSHJe2kVcZvENaqg7Pgg2TqR9/Ir83V4jLW cJtSPsDLlZmXKd/fkOU28YDYJWDAMv0tV9aKjth0FfDIZUKRoU7JgBjO5WIlux8oVFvTDDs3Vdr mhPNBElZK4FqWfJGZHaS6iyc6UNhIN9hBJsp47PIHbrENNSMcAGRtIVedaoVMzey+BERDSkhR4U rQPR7lekkhrEkJ26uvA5Z35UOY0kZOZfKAlshu4T3KxbXS1nC3kUW30ivKeYdn0wJl7UvesCb+U DF8r7EvwzkoTLV3feK6TWmWacLWR4QDhHIc1Fb7TruMouIxeVGnzLcOlTr0okmI2I0RSBx/3vVq MPnbIArofZcVm/K81PsoAxuEll5MpdUZ0q72zK6O6ccPEz19LbEBlkt0KFgaBe/BefEbsfMaH3J fuoolqmRt3MBhJNQ80h87GKGoAgaGpCkXJiSc/uhu6zrwj0/YXPgaP4dbQ14tEBV2kNHKbOOB0= X-Received: by 2002:a17:907:9616:b0:c1f:922d:34c3 with SMTP id a640c23a62f3a-c2039b8150fmr557072366b.14.1786003486894; Thu, 06 Aug 2026 01:04:46 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH] bhyve: lock domain object while handling monitor events Date: Thu, 6 Aug 2026 10:03:33 +0200 Message-ID: <20260806080333.2762-1-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ZY6FLQSL63XN4UM2JJ7F2KNVJUKWDYKE X-Message-ID-Hash: ZY6FLQSL63XN4UM2JJ7F2KNVJUKWDYKE X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1786003553972158500 Content-Type: text/plain; charset="utf-8" virBhyveProcessStop() calls virBhyveDomainObjStopWorker(), which expects the domain object to be locked. It temporarily releases the lock while stopping the event thread and acquires it again before returning. bhyveMonitorIO() called the process stop and restart paths without holding the domain lock. As a result, the lock acquired by virBhyveDomainObjStopWorker() was never released, causing subsequent domain API calls to hang after the guest exited. Lock the domain object while processing the bhyve process exit event and release it after the stop or restart operation completes. Fixes: 0041788857dafa46e047c09c90039209a642cb85 ("bhyve: clean up event thr= ead") Signed-off-by: Roman Bogorodskiy Reviewed-by: Martin Kletzander --- src/bhyve/bhyve_monitor.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c index a24696cad5..a7d7588ee5 100644 --- a/src/bhyve/bhyve_monitor.c +++ b/src/bhyve/bhyve_monitor.c @@ -140,11 +140,13 @@ bhyveMonitorIO(int watch, int kq, int events G_GNUC_U= NUSED, void *opaque) } =20 if (kev.filter =3D=3D EVFILT_PROC && (kev.fflags & NOTE_EXIT) !=3D 0) { + virObjectLock(vm); + if ((pid_t)kev.ident !=3D vm->pid) { virReportError(VIR_ERR_INTERNAL_ERROR, _("event from unexpected proc %1$ju!=3D%2$ju"), (uintmax_t)vm->pid, (uintmax_t)kev.ident); - return; + goto cleanup; } =20 name =3D vm->def->name; @@ -169,6 +171,9 @@ bhyveMonitorIO(int watch, int kq, int events G_GNUC_UNU= SED, void *opaque) virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_UNKNOWN= , false); } } + + cleanup: + virObjectUnlock(vm); } } =20 --=20 2.52.0