[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