When doing the qemumonitorjsontest on a machine under heavy load the test tends to deadlock from time to time. This patch adds the hack to break the event loop that is used in virsh. --- tests/qemumonitortestutils.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/qemumonitortestutils.c b/tests/qemumonitortestutils.c index 93d2f62..7f7c855 100644 --- a/tests/qemumonitortestutils.c +++ b/tests/qemumonitortestutils.c @@ -331,9 +331,17 @@ static void qemuMonitorTestItemFree(qemuMonitorTestItemPtr item) } +static void +qemuMonitorTestFreeTimer(int timer ATTRIBUTE_UNUSED, void *opaque ATTRIBUTE_UNUSED) +{ + /* nothing to be done here */ +} + + void qemuMonitorTestFree(qemuMonitorTestPtr test) { size_t i; + int timer = -1; if (!test) return; @@ -341,6 +349,8 @@ void qemuMonitorTestFree(qemuMonitorTestPtr test) virMutexLock(&test->lock); if (test->running) { test->quit = true; + /* HACK: Add a dummy timeout to break event loop */ + timer = virEventAddTimeout(0, qemuMonitorTestFreeTimer, NULL, NULL); } virMutexUnlock(&test->lock); @@ -361,6 +371,9 @@ void qemuMonitorTestFree(qemuMonitorTestPtr test) if (test->running) virThreadJoin(&test->thread); + if (timer != -1) + virEventRemoveTimeout(timer); + for (i = 0 ; i < test->nitems ; i++) qemuMonitorTestItemFree(test->items[i]); VIR_FREE(test->items); -- 1.8.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list