mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 21:34:54 +03:00
qemumonitortestutils: Resolve resource leaks found by Valgrind
When Valgrind runs the 'qemumonitorjsontest' it would claim that the thread created is leaked. That's because the virThreadJoin won't get called due to the 'running' flag being cleared. In order to avoid that, call virThreadJoin unconditionally at cleanup time. Also noted that the qemuMonitorTestWorker() didn't get the test mutex lock on the failure path. The incoming and outgoing buffers allocated by qemuMonitorTestIO() and qemuMonitorTestAddReponse() were never VIR_FREE()'d in qemuMonitorTestFree().
This commit is contained in:
parent
3f5250ff8e
commit
9442d03c48
@ -308,6 +308,7 @@ static void qemuMonitorTestWorker(void *opaque)
|
||||
virMutexUnlock(&test->lock);
|
||||
|
||||
if (virEventRunDefaultImpl() < 0) {
|
||||
virMutexLock(&test->lock);
|
||||
test->quit = true;
|
||||
break;
|
||||
}
|
||||
@ -370,12 +371,14 @@ void qemuMonitorTestFree(qemuMonitorTestPtr test)
|
||||
|
||||
virObjectUnref(test->vm);
|
||||
|
||||
if (test->running)
|
||||
virThreadJoin(&test->thread);
|
||||
virThreadJoin(&test->thread);
|
||||
|
||||
if (timer != -1)
|
||||
virEventRemoveTimeout(timer);
|
||||
|
||||
VIR_FREE(test->incoming);
|
||||
VIR_FREE(test->outgoing);
|
||||
|
||||
for (i = 0 ; i < test->nitems ; i++)
|
||||
qemuMonitorTestItemFree(test->items[i]);
|
||||
VIR_FREE(test->items);
|
||||
|
Loading…
Reference in New Issue
Block a user