[libvirt] [libvirt-java] [PATCH 11/65] Use virFree in order to release memory acquired from libvirt

Daniel P. Berrange berrange at redhat.com
Fri Feb 21 10:40:18 UTC 2014


On Thu, Feb 13, 2014 at 04:22:19PM +0100, Claudio Bley wrote:
> When JNA is linked to a different runtime library than libvirt, using
> JNA's Native.free will probably lead to crashes as witnessed on
> Windows:
> 
>  # A fatal error has been detected by the Java Runtime Environment:
>  #
>  #  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000077363290, pid=10180, tid=9908
>  #
>  # JRE version: 7.0_25-b16
>  # Java VM: Java HotSpot(TM) 64-Bit Server VM (23.25-b01 mixed mode windows-amd64 compressed oops)
>  # Problematic frame:
>  # C  [ntdll.dll+0x53290]  RtlFreeHeap+0xd0
> 
> The root cause is that the libvirt DLL uses MSVCRT as its runtime
> library, whereas the jnidispatch DLL of JNA uses a different one.
> 
> At runtime, when calling org.sun.com.jna.Native.free() the OS function
> RtlFreeHeap is called with an invalid Pointer that was actually
> allocated by MSVCRT's malloc.
> 
> Basically, we cannot simply mix and match memory allocation functions
> from different runtime libraries, but have to call virFree for
> pointers orignating from libvirt itself.
> 
> So, this patch re-adds and uses the virFree method which had been
> removed in commit 3220de292990bed71828fba2f3700bc846d440f2.
> 
> Signed-off-by: Claudio Bley <cbley at av-test.de>
> ---
>  src/main/java/org/libvirt/Library.java     |    4 ++--
>  src/main/java/org/libvirt/jna/Libvirt.java |    2 ++
>  2 files changed, 4 insertions(+), 2 deletions(-)

NACK to this.

virFree is an internal only symbol which is not guaranteeed to be
ABI stable across libvirt releases. ie we may remove or rename it
or change its API signature at any time. 

Not sure what else to suggest though.

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