On agent EOF the qemuProcessHandleAgentEOF() callback is called
which locks virDomainObjPtr. Then qemuAgentClose() is called
(with domain object locked) which eventually calls qemuAgentDispose()
and qemuProcessHandleAgentDestroy(). This tries to lock the
domain object again. Hence the deadlock.
* performed
*/
static void
-qemuProcessHandleAgentEOF(qemuAgentPtr agent ATTRIBUTE_UNUSED,
+qemuProcessHandleAgentEOF(qemuAgentPtr agent,
virDomainObjPtr vm)
{
struct qemud_driver *driver = qemu_driver;
virDomainObjLock(vm);
priv = vm->privateData;
-
- qemuAgentClose(agent);
priv->agent = NULL;
virDomainObjUnlock(vm);
qemuDriverUnlock(driver);
+
+ qemuAgentClose(agent);
}