Opened 12 years ago
Closed 11 years ago
#11232 closed defect (fixed)
Java XPCOM Bridge crash Oracle Java JVM => Fixed in SVN
Reported by: | Max D | Owned by: | |
---|---|---|---|
Component: | other | Version: | VirtualBox 4.2.4 |
Keywords: | xpcom java api sdk | Cc: | |
Guest type: | all | Host type: | Linux |
Description
While using the Java XPCOM bridge API, I've encountered a reproducible JVM crash that totally prevent the use of the Java-XPCOM bridge, also known as vboxjxpcom.jar, this under Debian Wheezy.
You will find 3 files attached to this ticket :
- The java code to reproduce the bug, being simply the sample code provided into the SDK PDF file, without the line starting the VM.
- The crash log file from the JVM
- A putty session log with the list of all the commands ran since the install of the systems with the list of installed packages at some key moments.
How to reproduce :
- Using Virtualbox, create a Linux Debian 64 bits VM
- Boot from Debian image called debian-wheezy-DI-b3-amd64-netinst.iso
- Install with only SSH server & basic system tools
- Add Virtualbox repos for wheezy to apt & install 4.2.4, accepting all required packages.
- Install the following JRE : jre-7u9-linux-x64.tar.gz
- Compile the java class into sample.jar and copy to current dir
- Copy vboxjxpcom.jar to the current dir
- java -Dvbox.home=/usr/lib/virtualbox -cp ./vboxjxpcom.jar:sample.jar rrr
- See crash
Attachments (5)
Change History (21)
by , 12 years ago
Attachment: | hs_err_pid9622.log added |
---|
comment:1 by , 12 years ago
This crash also happen under Ubuntu server 12.10, following the same steps.
comment:2 by , 12 years ago
I can also reproduce this in the SVN r43953 using Oracle Java 1.6.0_37 - see forum post https://forums.virtualbox.org/viewtopic.php?f=10&t=52805
comment:3 by , 12 years ago
Using SVN r43953 and openJDK 1.6.0_24, the JVM does not crash anymore, but the following error occur :
noteirak@debian:~$ java -Dvbox.home=/usr/lib/virtualbox -cp vboxjxpcom.jar:sample.jar Sample VirtualBox version: 4.2.51_OSE Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException at org.mozilla.xpcom.internal.XPCOMJavaProxy.callXPCOMMethod(Native Method) at org.mozilla.xpcom.internal.XPCOMJavaProxy.invoke(XPCOMJavaProxy.java:143) at $Proxy1.getMachines(Unknown Source) at org.virtualbox_4_3.IVirtualBox.getMachines(IVirtualBox.java:110) at Sample.main(Sample.java:9) noteirak@debian:~$
Slightly changed java code to produce this :
import org.virtualbox_4_3.IVirtualBox; import org.virtualbox_4_3.VirtualBoxManager; public class Sample { public static void main(String[] args) { VirtualBoxManager mgr = VirtualBoxManager.createInstance(null); IVirtualBox vbox = mgr.getVBox(); System.out.println("VirtualBox version: " + vbox.getVersion() + "\n"); System.out.println("There are " + vbox.getMachines().size() + " VMs on this host."); mgr.cleanup(); } }
by , 12 years ago
Attachment: | hs_err_pid10420.log added |
---|
comment:5 by , 12 years ago
The crash also happens with Virtualbox 4.2.6!
Virtualbox Version: 4.2.6r82870
java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.3) (7u9-2.3.3-0ubuntu1~12.04.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)
See crash report: hs_err_pid10420.log
comment:6 by , 11 years ago
noteirak@vbox-svn:~$ java -Dvbox.home=/opt/VirtualBox -cp vboxjxpcom.jar:xpcom.jar Sample VirtualBox version: 4.2.51_OSE # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f9187bc3c87, pid=4482, tid=140263046547200 # # JRE version: 7.0_03-b21 # Java VM: OpenJDK 64-Bit Server VM (22.0-b10 mixed mode linux-amd64 compressed oops) # Derivative: IcedTea7 2.1.7 # Distribution: Debian GNU/Linux 7.0 (wheezy), package 7u3-2.1.7-1 # Problematic frame: # V [libjvm.so+0x50fc87] jni_SetLongArrayRegion+0x107 # # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again # # An error report file with more information is saved as: # /home/noteirak/hs_err_pid4482.log # # If you would like to submit a bug report, please include # instructions on how to reproduce the bug and visit: # http://icedtea.classpath.org/bugzilla #
comment:7 by , 11 years ago
noteirak@VBTest:~$ java -Dvbox.home=/usr/lib/virtualbox -cp ./vboxjxpcom.jar:./sample.jar Sample VirtualBox version: 4.2.16 # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f70c82ddfb7, pid=12411, tid=140122394121984 # # JRE version: 7.0_21-b02 # Java VM: OpenJDK 64-Bit Server VM (23.7-b01 mixed mode linux-amd64 compressed oops) # Problematic frame: # V [libjvm.so+0x53efb7] jni_SetLongArrayRegion+0x107 # # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again # # An error report file with more information is saved as: # /home/noteirak/hs_err_pid12411.log # # If you would like to submit a bug report, please include # instructions on how to reproduce the bug and visit: # http://icedtea.classpath.org/bugzilla # Aborted noteirak@VBTest:~$
Still an issue at 4.2.16
comment:8 by , 11 years ago
Just one additional, very isolated data point: tried your code with my local build (latest trunk, no related fixes to avoid creating hope), and it doesn't crash, it behaves exactly as expected. Quite old java here, official Oracle/Sun JRE 1.6.0_26, 64 bit (Linux host). However this data point means that I can't immediately reproduce the problem.
comment:9 by , 11 years ago
noteirak@VBTest:~$ java -version java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode) noteirak@VBTest:~$ java -Dvbox.home=/usr/lib/virtualbox -cp ./vboxjxpcom.jar:./sample.jar Sample VirtualBox version: 4.2.16 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException at org.mozilla.xpcom.internal.XPCOMJavaProxy.callXPCOMMethod(Native Method) at org.mozilla.xpcom.internal.XPCOMJavaProxy.invoke(XPCOMJavaProxy.java:143) at $Proxy1.getMachines(Unknown Source) at org.virtualbox_4_2.IVirtualBox.getMachines(IVirtualBox.java:110) at Sample.main(Sample.java:9) noteirak@VBTest:~$
We already had this dicussion tho, and we couldn't get anything out of it easily.
Issue look the same, the error being triggered at a different level:
jni_SetLongArrayRegion+0x107
vs
java.lang.ArrayIndexOutOfBoundsException
I don't desperate to find enough time and energy to look at VB code and try to see what the hell is going on... but no great hope yet, C/C++ is not my thing.
comment:10 by , 11 years ago
This is getting super mysterious... with the VM you provided this is easily reproducible. But whenever I replace libvboxjxpcom.so with a locally built one (i.e. including debug info so that I can work out exactly where it crashes, what the parameters are and so on, the crash magically disappears and the previously crashing test completes just fine. Of course there were no changes to the sources of libvboxjxpcom.so since 4.3 was branched off, so it's either a super indirect issue (behavior differences caused by different header files or the like), or specific to how we build the debian packages (or the Linux release packages in general).
comment:11 by , 11 years ago
I hope I squashed the super well hidden bug in libvboxjxpcom.so (why don't compilers warn when there's really fishy code?). The bug is in the base package, NOT in the sdk, so you'll have to wait for updates which rectify this...
Check out http://www.virtualbox.org/download/testcase/virtualbox-4.3_4.3.7-92153~Debian~wheezy_amd64.deb
comment:12 by , 11 years ago
No more crash with your test build, seems like you got it!
I'll do more indepth tests and let you know but seems like you can mark this as fixed.
comment:13 by , 11 years ago
Summary: | Java XPCOM Bridge crash Oracle Java JVM → Java XPCOM Bridge crash Oracle Java JVM => Fixed in SVN |
---|
JVM crash log