Check that the ao is still live when we are about to running some of its callbacks.
This reveals an existing bug in libxl which is exercised by libvirt, converting libvirtd: libxl_event.c:1792: libxl__ao_complete_check_progress_reports: Assertion `ao->in_initiator' failed. into libvirtd: libxl_event.c:1338: egc_run_callbacks: Assertion `aop->ao->magic == 0xA0FACE00ul' failed. Signed-off-by: Ian Jackson <ian.jack...@eu.citrix.com> CC: Ian Campbell <ian.campb...@citrix.com> CC: Wei Liu <wei.l...@citrix.com> CC: Jim Fehlig <jfeh...@suse.com> --- tools/libxl/libxl_event.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/libxl/libxl_event.c b/tools/libxl/libxl_event.c index 0d874d9..ae73728 100644 --- a/tools/libxl/libxl_event.c +++ b/tools/libxl/libxl_event.c @@ -1335,6 +1335,7 @@ static void egc_run_callbacks(libxl__egc *egc) aop->how->callback(CTX, aop->ev, aop->how->for_callback); CTX_LOCK; + assert(aop->ao->magic == LIBXL__AO_MAGIC); aop->ao->progress_reports_outstanding--; libxl__ao_complete_check_progress_reports(egc, aop->ao); CTX_UNLOCK; -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel