[libvirt] Java binding - JVM crashes .. sometimes

Daniel Schwager Daniel.Schwager at dtnet.de
Tue Feb 17 22:58:22 UTC 2009


Hi,

since I updated to the new libvirt-version (CVS snapshot of today),
my JVM running my multi-thread application "sometimes" will crashes
if I open or close libvirt-connection (on KVM hypervisor).

I didn't find out the exact szenario - simple junit tests are running well.
But inside my main application (multi tread, multiple fast access to libvirt java interface)
will crash the JVM.

The crash-report looks like ALWAYS like the following 2 examples.
Is there a way to 
	- debug this 
	- make the JNI code more robust ?
	- make the open/close of libvirt more robust ?

I think the JVM crashes, because the libvirt crashes. Is there a
way to look inside libvirt to see a "crash" of the native libvirt-prog ?

My application runs very well with the old version libvirt-0.4.5. I think,
problem starts with >= 0.5.

One more: Something, it happens, that a virsh -command  on the commandline
prints out an error message similar to "Can't connect to hypervisor" (I can't
reproduce it at the moment). Multiple repeating the command works well.
This happens not often - but sometimes..

Now, the Stacktrace of the crashed JVM


** first
...
Instructions: (pc=0x0000000001206351)
0x0000000001206341:   c0 48 83 c4 28 5b 41 5c 41 5d 41 5e 41 5f c9 c3
0x0000000001206351:   49 8b 3e e8 47 f7 fc ff 84 c0 74 18 48 8b 15 bc

Stack: [0x0000000002430000,0x0000000002531000],  sp=0x000000000252f0d0,  free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x34a351]
V  [libjvm.so+0x325201]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  org.libvirt.Connect._close(J)I+0
j  org.libvirt.Connect.close()V+5
j  org.libvirt.Connect.finalize()V+1
v  ~StubRoutines::call_stub
j  java.lang.ref.Finalizer.invokeFinalizeMethod(Ljava/lang/Object;)V+0
j  java.lang.ref.Finalizer.runFinalizer()V+45
j  java.lang.ref.Finalizer.access$100(Ljava/lang/ref/Finalizer;)V+1
j  java.lang.ref.Finalizer$FinalizerThread.run()V+11
v  ~StubRoutines::call_stub
...


** Second
...
Stack: [0x000000002a061000,0x000000002a162000],  sp=0x000000002a15e050,  free space=1012k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x34a351]
V  [libjvm.so+0x325201]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  org.libvirt.Connect._open(Ljava/lang/String;)J+0
j  org.libvirt.Connect.<init>(Ljava/lang/String;Z)V+23
j  de.dtnet.virtcontroller.server.command.VDomain.open(Ljava/lang/String;)Lorg/libvirt/Connect;+74
...



Viele Gruesse

Daniel Schwager

-------------------------------------------------------------------
DT Netsolution GmbH   -   Taläckerstr. 30    -    D-70437 Stuttgart
Geschäftsführer: Daniel Schwager, Stefan Hörz - HRB Stuttgart 19870
Tel: +49-711-849910-32, Fax: -932 - Mailto:daniel.schwager at dtnet.de






More information about the libvir-list mailing list