
On 04/10/2012 09:05 AM, Jiri Denemark wrote:
qemuDomainObjEnterMonitor{,WithDriver} should not be called from async jobs, only EnterMonitorAsync variant is allowed. --- src/qemu/qemu_domain.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7f1f8ee..4dda2e0 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -975,6 +975,9 @@ qemuDomainObjEnterMonitorInternal(struct qemud_driver *driver, _("unexpected async job %d"), asyncJob); return -1; } + if (priv->job.asyncOwner != virThreadSelfID()) + VIR_WARN("This thread doesn't seem to be the async job owner: %d", + priv->job.asyncOwner);
virThreadSelfID() is not bullet-proof (it returns int, but there are platforms with 64-bit thread ids); but it is adequate for our purposes (you only check it for issuing a warning, rather than actually erroring out, and on our common development platform of Linux, it does the right thing). ACK series. -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org