mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 12:35:17 +00:00
qemu: Avoid sending STOPPED event twice
In some circumstances, libvirtd would issue two STOPPED events after it stopped a domain. This was because an EOF event can arrive after a qemu process is killed but before qemuMonitorClose() is called. qemuHandleMonitorEOF() should ignore EOF when the domain is not running. I wasn't able to reproduce this bug directly, only after adding an artificial sleep() into qemudShutdownVMDaemon().
This commit is contained in:
parent
45c02ee06f
commit
15e7865893
@ -356,6 +356,12 @@ qemuHandleMonitorEOF(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
|
||||
|
||||
virDomainObjLock(vm);
|
||||
|
||||
if (!virDomainObjIsActive(vm)) {
|
||||
VIR_DEBUG("Domain %p is not active, ignoring EOF", vm);
|
||||
virDomainObjUnlock(vm);
|
||||
return;
|
||||
}
|
||||
|
||||
priv = vm->privateData;
|
||||
if (!hasError && priv->monJSON && !priv->gotShutdown) {
|
||||
VIR_DEBUG("Monitor connection to '%s' closed without SHUTDOWN event; "
|
||||
|
Loading…
x
Reference in New Issue
Block a user