]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
bhyve: clean up event thread
authorRoman Bogorodskiy <bogorodskiy@gmail.com>
Sat, 25 Jul 2026 05:18:29 +0000 (07:18 +0200)
committerRoman Bogorodskiy <bogorodskiy@gmail.com>
Mon, 27 Jul 2026 15:52:59 +0000 (17:52 +0200)
Currently, eventThread cleanup is missing. Fix that by calling
virBhyveDomainObjStopWorker() in virBhyveProcessStop()
and un-referring the eventThread in bhyveDomainObjPrivateFree().

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/bhyve/bhyve_domain.c
src/bhyve/bhyve_process.c

index d5bb22501cfdd6935b25122ef52aa72ed16c654e..b6344185b7b9f8a837ea0ff2e4698da933838b0f 100644 (file)
@@ -54,6 +54,11 @@ bhyveDomainObjPrivateFree(void *data)
 
     virDomainPCIAddressSetFree(priv->pciaddrs);
 
+    if (priv->eventThread) {
+        VIR_ERROR(_("Unexpected event thread still active during domain deletion"));
+        g_object_unref(priv->eventThread);
+    }
+
     g_free(priv);
 }
 
index 636d74afccae1ac4d8c097ff8d66d99654233512..81f00954c2e6c4174e9a1135867a1e27867a1e4e 100644 (file)
@@ -675,6 +675,8 @@ virBhyveProcessStop(struct _bhyveConn *driver,
     if ((priv != NULL) && (priv->mon != NULL))
          g_clear_pointer(&priv->mon, bhyveMonitorClose);
 
+    virBhyveDomainObjStopWorker(vm);
+
     cmd = virBhyveProcessBuildDestroyCmd(driver, vm->def);
     if (virCommandRun(cmd, NULL) < 0) {
         /* Only failure of the actual destroy command warrants unsuccessful return code,