When an error occurred in qemuAgentIO, it will be saved in mon->lastError, but it will not be freed at last. So I add the following code to fix it. ==22219== 54 bytes in 1 blocks are definitely lost in loss record 982 of 1,379 ==22219== at 0x4C26B9B: malloc (vg_replace_malloc.c:263) ==22219== by 0x8520521: strdup (in /lib64/libc-2.11.3.so) ==22219== by 0x52E99CB: virStrdup (virstring.c:554) ==22219== by 0x52B44C4: virCopyError (virerror.c:195) ==22219== by 0x52B5123: virCopyLastError (virerror.c:312) ==22219== by 0x10905877: qemuAgentIO (qemu_agent.c:660) ==22219== by 0x52B6122: virEventPollDispatchHandles (vireventpoll.c:501) ==22219== by 0x52B7AEA: virEventPollRunOnce (vireventpoll.c:647) ==22219== by 0x52B5C1B: virEventRunDefaultImpl (virevent.c:274) ==22219== by 0x54181FD: virNetServerRun (virnetserver.c:1112) ==22219== by 0x11EF4D: main (libvirtd.c:1513) Signed-off-by: Zhou Yimin <zhouyimin@xxxxxxxxxx> --- src/qemu/qemu_agent.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c index 2cd0ccc..4a3820c 100644 --- a/src/qemu/qemu_agent.c +++ b/src/qemu/qemu_agent.c @@ -161,6 +161,7 @@ static void qemuAgentDispose(void *obj) (mon->cb->destroy)(mon, mon->vm); virCondDestroy(&mon->notify); VIR_FREE(mon->buffer); + virResetError(&mon->lastError); } static int -- 1.7.3.1.msysgit.0 Best Regards, -WangYufei -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list