On 12/13/2013 10:12 AM, Michal Privoznik wrote:
> When registering a close callback, the connection refcount is increased
> as the connection object is passed to the callback and hence we must
> prevent deleting it too soon. However, when closing the connection, the
> connection object is just unrefed. So whenever a connection with a close
> callback is closed, we end up with the connection object which has
> exactly one reference. Leaving the code as-is doesn't mean the end of
> the world as we know it, but why give a bad example?
> 
> ==14531== 288 bytes in 1 blocks are still reachable in loss record 695 of 762
> ==14531==    at 0x4C2BDE4: calloc (in 
> /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==14531==    by 0x4E9FE09: virAllocVar (viralloc.c:558)
> ==14531==    by 0x4EDBE45: virObjectNew (virobject.c:190)
> ==14531==    by 0x4F71AAC: virGetConnect (datatypes.c:116)
> ==14531==    by 0x4F78511: do_open (libvirt.c:1136)
> ==14531==    by 0x4F7B3AC: virConnectOpenAuth (libvirt.c:1481)
> ==14531==    by 0x4011D2: main (event-test.c:499)
> 
> (and other leaks tied to virGetConnect())
> 
> Signed-off-by: Michal Privoznik <mpriv...@redhat.com>
> ---
>  examples/object-events/event-test.c | 2 ++
>  1 file changed, 2 insertions(+)

ACK.

> 
> diff --git a/examples/object-events/event-test.c 
> b/examples/object-events/event-test.c
> index f872b9f..228a091 100644
> --- a/examples/object-events/event-test.c
> +++ b/examples/object-events/event-test.c
> @@ -675,6 +675,8 @@ int main(int argc, char **argv)
>              virConnectDomainEventDeregisterAny(dconn, callback8ret);
>      }
>  
> +    virConnectUnregisterCloseCallback(dconn, connectClose);
> +
>      VIR_DEBUG("Closing connection");
>      if (dconn && virConnectClose(dconn) < 0) {
>          printf("error closing\n");
> 

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

Attachment: signature.asc
Description: OpenPGP digital signature

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to