Verification done on jammy-proposed. --- Part 1: comment #2, libvirt starts without errors, and can list and manage the domain. Part 2: comment #5, libvirt restarts without errors 100 times with 10 domains.
Environment: --- LXD container lxc launch --vm ubuntu:jammy lp2059272-jammy lxc exec lp2059272-jammy -- su - ubuntu Enable -proposed sudo add-apt-repository -yp proposed cat <<EOF | sudo tee /etc/apt/preferences.d/proposed Package: * Pin: release a=jammy-proposed Pin-Priority: 400 EOF Install sudo apt install -y -t jammy-proposed libvirt-daemon libvirt-daemon-system libvirt-daemon-driver-qemu sudo apt install -y gdb qemu-system-x86 $ apt-cache policy libvirt-daemon libvirt-daemon: Installed: 8.0.0-1ubuntu7.9 Candidate: 8.0.0-1ubuntu7.9 Version table: *** 8.0.0-1ubuntu7.9 400 400 http://security.ubuntu.com/ubuntu jammy-proposed/main amd64 Packages 400 http://archive.ubuntu.com/ubuntu jammy-proposed/main amd64 Packages 100 /var/lib/dpkg/status 8.0.0-1ubuntu7.8 500 500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages 8.0.0-1ubuntu7.5 500 500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages 8.0.0-1ubuntu7 500 500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages Part 1: --- GDB ... Check there are 2 threads: cleanup and domain status XML save (gdb) i th Id Target Id Frame 1 Thread 0x7fe039120ac0 (LWP 3405) "libvirtd" qemuStateCleanup () at ../../src/qemu/qemu_driver.c:1070 18 Thread 0x7fe00ffff640 (LWP 3425) "gmain" (running) 19 Thread 0x7fe00f7fe640 (LWP 3426) "gdbus" (running) 20 Thread 0x7fe00effd640 (LWP 3473) "udev-event" (running) 24 Thread 0x7fe014e07640 (LWP 3600) "vm-test-vm" (running) 25 Thread 0x7fe00dffb640 (LWP 3620) "qemu-event" virDomainObjSave (obj=0x7fe028301a30, xmlopt=0x7fe028040010, statusDir=0x7fe0280373b0 "/run/libvirt/qemu") at ../../src/conf/domain_conf.c:28879 Confirm the qemu driver's domain xml formatter/options is set/referenced: (gdb) t 25 (gdb) p xmlopt.privateData.format $1 = (virDomainXMLPrivateDataFormatFunc) 0x7fe0176b4da0 <qemuDomainObjPrivateXMLFormat> (gdb) p xmlopt.parent.parent_instance $2 = {g_type_instance = {g_class = 0x7fe02806cf20}, ref_count = 1, qdata = 0x0} Let the cleanup function and shutdown path finish (gdb) t 1 (gdb) c & (gdb) t 25 Check the formatter/options again; it is *STILL* referenced: (gdb) p xmlopt.privateData.format $3 = (virDomainXMLPrivateDataFormatFunc) 0x7fe0176b4da0 <qemuDomainObjPrivateXMLFormat> (gdb) p xmlopt.parent.parent_instance $4 = {g_type_instance = {g_class = 0x7fe02806cf20}, ref_count = 1, qdata = 0x0} Check the VM status XML *before* the save function finishes: $ sudo grep -e '<domstatus' -e '<domain' -e 'monitor path' /run/libvirt/qemu/test-vm.xml <domstatus state='running' reason='booted' pid='3597'> <monitor path='/var/lib/libvirt/qemu/domain-1-test-vm/monitor.sock' type='unix'/> <domain type='qemu' id='1'> Let the save function continue, and libvirt finishes shutting down: (gdb) c ... [Inferior 1 (process 3405) exited normally] Check the VM status XML *after*: $ sudo grep -e '<domstatus' -e '<domain' -e 'monitor path' /run/libvirt/qemu/test-vm.xml <domstatus state='running' reason='booted' pid='3597'> <monitor path='/var/lib/libvirt/qemu/domain-1-test-vm/monitor.sock' type='unix'/> <domain type='qemu' id='1'> It *CONTINUES* to have the 'monitor path' tag/field. Now, the next time libvirtd starts, it *CORRECTLY* parses that XML: $ sudo systemctl start libvirtd.service $ journalctl -b -u libvirtd.service | tail | grep error $ And libvirt is now aware of the domain, and can manage it: $ virsh list Id Name State ------------------------- 1 test-vm running $ virsh destroy test-vm Domain 'test-vm' destroyed Part 2: --- $ for i in {1..100}; do echo restart $i; sudo systemctl restart libvirtd.service; sleep 10; done restart 1 restart 2 restart 3 ... restart 98 restart 99 restart 100 No errors: $ journalctl -b -u libvirtd.service | grep -v -e 'systemd' -e 'hostname:' | cut -d' ' -f7- | sort | uniq -c | sort -rn 106 /var/lib/libvirt/dnsmasq/default.hostsfile 106 /var/lib/libvirt/dnsmasq/default.addnhosts - 0 names 106 /etc/hosts - 8 names ** Tags removed: verification-needed-jammy ** Tags added: verification-done-jammy -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2059272 Title: libvirt domain is not listed/managed after libvirt restart with messages "internal error: no monitor path" and "Failed to load config for domain" To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/2059272/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs