[libvirt] [PATCH] qemud: fix memory leak in io error events
Daniel P. Berrange
berrange at redhat.com
Wed Dec 1 15:31:24 UTC 2010
On Wed, Dec 01, 2010 at 09:29:31AM -0600, Anthony Liguori wrote:
> The extra data isn't being free()'d for IO error events that have a reason.
>
> Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>
> ---
> I wasn't able to test this because the build is broken for me. I won't be able
> to test it in the field for a couple days.
>
> The problem we're seeing is a rather fast memory leak that exhausts all system
> memory. I believe the source of the leak is that our underlying storage is
> throwing an I/O error and libvirt is not properly freeing the resulting IO
> error event object.
>
> Because the storage is constantly generating errors and the guest is constantly
> reading, memory is just consumed until the system is exhausted.
>
> diff --git a/src/conf/domain_event.c b/src/conf/domain_event.c
> index e88aafe..5f086bd 100644
> --- a/src/conf/domain_event.c
> +++ b/src/conf/domain_event.c
> @@ -472,6 +472,7 @@ void virDomainEventFree(virDomainEventPtr event)
> return;
>
> switch (event->eventID) {
> + case VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON:
> case VIR_DOMAIN_EVENT_ID_IO_ERROR:
> VIR_FREE(event->data.ioError.srcPath);
> VIR_FREE(event->data.ioError.devAlias);
ACK
Daniel
More information about the libvir-list
mailing list