[libvirt] [PATCH] Fix a memory leak

Eric Blake eblake at redhat.com
Tue Apr 17 19:03:35 UTC 2012


On 04/17/2012 12:55 PM, Stefan Berger wrote:
> The below patch fixes the following memory leak.
> 
> ==20624== 24 bytes in 2 blocks are definitely lost in loss record 532 of
> 1,867
> ==20624==    at 0x4A05E46: malloc (vg_replace_malloc.c:195)
> ==20624==    by 0x38EC27FC01: strdup (strdup.c:43)
> ==20624==    by 0x4EB6BA3: virDomainChrSourceDefCopy (domain_conf.c:1122)
> ==20624==    by 0x495D76: qemuProcessFindCharDevicePTYs
> (qemu_process.c:1497)
> ==20624==    by 0x498321: qemuProcessWaitForMonitor (qemu_process.c:1258)
> ==20624==    by 0x49B5F9: qemuProcessStart (qemu_process.c:3652)
> ==20624==    by 0x468B5C: qemuDomainObjStart (qemu_driver.c:4753)
> ==20624==    by 0x469171: qemuDomainStartWithFlags (qemu_driver.c:4810)
> ==20624==    by 0x4F21735: virDomainCreate (libvirt.c:8153)
> ==20624==    by 0x4302BF: remoteDispatchDomainCreateHelper
> (remote_dispatch.h:852)
> ==20624==    by 0x4F72C14: virNetServerProgramDispatch
> (virnetserverprogram.c:416)
> ==20624==    by 0x4F6D690: virNetServerHandleJob (virnetserver.c:164)
> ==20624==    by 0x4E8F43D: virThreadPoolWorker (threadpool.c:144)
> ==20624==    by 0x4E8EAB5: virThreadHelper (threads-pthread.c:161)
> ==20624==    by 0x38EC606CCA: start_thread (pthread_create.c:301)
> ==20624==    by 0x38EC2E0C2C: clone (clone.S:115)
> 
> ---
> 
> I am wondering whether 'something' did not work properly before due to
> the missing assignment below?

Very likely.

> 
> ---
>  src/conf/domain_conf.c |    2 ++
>  1 file changed, 2 insertions(+)
> 
> Index: libvirt-acl/src/conf/domain_conf.c
> ===================================================================
> --- libvirt-acl.orig/src/conf/domain_conf.c
> +++ libvirt-acl/src/conf/domain_conf.c
> @@ -1174,6 +1174,8 @@ virDomainChrSourceDefCopy(virDomainChrSo
>          break;
>      }
> 
> +    dest->type = src->type;
> +

ACK.  No good writing into a union if you forget to also update the
discriminator to say which branch of the union is active.  The missing
assignment definitely explains the memory leak.

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120417/fbf934d7/attachment-0001.sig>


More information about the libvir-list mailing list