[libvirt] Memory leak in virInitialize -> vboxRegister -> VBoxCGlueInit

Daniel P. Berrange berrange at redhat.com
Mon Aug 13 07:57:41 UTC 2012


On Sat, Aug 11, 2012 at 07:45:19AM +0100, Richard W.M. Jones wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=847429
> 
> Spotted by valgrind:
> 
> ==2390== 45 bytes in 1 blocks are definitely lost in loss record 68 of 123
> ==2390==    at 0x4A086DC: malloc (vg_replace_malloc.c:270)
> ==2390==    by 0x30D060EBA0: _dl_signal_error (in /usr/lib64/ld-2.16.so)
> ==2390==    by 0x30D0612CF2: _dl_open (in /usr/lib64/ld-2.16.so)
> ==2390==    by 0x30D1601025: dlopen_doit (in /usr/lib64/libdl-2.16.so)
> ==2390==    by 0x30D060EDC5: _dl_catch_error (in /usr/lib64/ld-2.16.so)
> ==2390==    by 0x30D160163B: _dlerror_run (in /usr/lib64/libdl-2.16.so)
> ==2390==    by 0x30D16010C0: dlopen@@GLIBC_2.2.5 (in /usr/lib64/libdl-2.16.so)
> ==2390==    by 0x5893994: tryLoadOne (vbox_XPCOMCGlue.c:127)
> ==2390==    by 0x5893BE2: VBoxCGlueInit (vbox_XPCOMCGlue.c:230)
> ==2390==    by 0x589407F: vboxRegister (vbox_driver.c:88)
> ==2390==    by 0x5817568: virInitialize (libvirt.c:450)
> ==2390==    by 0x5492C02: init_libguestfs (guestfs.c:108)
> 
> libvirt-0.10.0-0rc0.fc18.x86_64
> 
> libguestfs calls virInitialize, but (since there is no cleanup
> function) doesn't do any corresponding cleanup.  Is that correct?

Yep, virInitialize does global one-time initialization and we don't
provide any de-initialization function, so any memory allocations
should be considered global state. You'll want to provide a valgrind
suppressions file which whitelists any stack trace below the
virInitialize function.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list