Apply this patch and run a patched libvirt daemon. Then start a VM and
kill it's process after few seconds:
# virsh start VM & sleep 3; killall -9 qemu-kvm
Upstream version doesn't crash but the virsh command returns cryptic
error message:
error: invalid argument: monitor must not be NULL
0.10.2 and similar downstream versions segfault:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffed467700 (LWP 29256)]
__pthread_mutex_lock (mutex=0x10) at pthread_mutex_lock.c:50
50 unsigned int type = PTHREAD_MUTEX_TYPE (mutex);
Missing separate debuginfos, use: debuginfo-install
VirtualBox-4.2-4.2.22_91556_el6-1.x86_64
(gdb) bt
#0 __pthread_mutex_lock (mutex=0x10) at pthread_mutex_lock.c:50
#1 0x00007fffe891585e in qemuDomainObjEnterMonitorInternal (driver=0x7fffe00858f0,
driver_locked=true, obj=0x7fffe01689c0, asyncJob=<value optimized out>)
at qemu/qemu_domain.c:1008
#2 0x00007fffe892662a in qemuProcessDetectVcpuPIDs (driver=0x7fffe00858f0,
vm=0x7fffe01689c0) at qemu/qemu_process.c:1831
#3 0x00007fffe892c417 in qemuProcessStart (conn=0x7fffdc000ae0, driver=0x7fffe00858f0,
vm=0x7fffe01689c0, migrateFrom=0x0, stdin_fd=-1, stdin_path=0x0, snapshot=0x0,
vmop=VIR_NETDEV_VPORT_PROFILE_OP_CREATE, flags=1) at qemu/qemu_process.c:4022
#4 0x00007fffe8973f3e in qemuDomainObjStart (conn=0x7fffdc000ae0, driver=0x7fffe00858f0,
vm=0x7fffe01689c0, flags=<value optimized out>) at qemu/qemu_driver.c:6025
---
src/qemu/qemu_process.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 9331744..a27eded 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -243,6 +243,8 @@ qemuConnectAgent(virQEMUDriverPtr driver, virDomainObjPtr vm)
config,
&agentCallbacks);
+ sleep(10);
+
virObjectLock(vm);
priv->agentStart = 0;
--
1.8.5.2