From Bugzilla Helper: User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2) Gecko/20040803 Description of problem: Kernel: kernel-2.6.8-1.521 IBM JRE version: IBMJava2-JRE-1.3.1-7.0 With the previous kernel-2.6.7-1.494.2.2, IBM java 1.3.1 worked fine: java version "1.3.1" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1) Classic VM (build 1.3.1, J2RE 1.3.1 IBM build cxia32131-20040527a (JIT enabled: jitc)) With the new kernel: $ /opt/IBMJava2-131/jre/bin/java -version JVMDG080: Cannot find class com/ibm/jvm/Trace Error occurred in diagnostics initialization(2) Could not create the Java virtual machine. If I try the legacy VM work around: # echo 1 > /proc/sys/vm/legacy_va_layout # /opt/IBMJava2-131/jre/bin/java -version I get a seg fault: Segmentation fault Version-Release number of selected component (if applicable): How reproducible: Always Steps to Reproduce: 1. Type /opt/IBMJava2-131/jre/bin/java -version 2. 3. Actual Results: JVMDG080: Cannot find class com/ibm/jvm/Trace Error occurred in diagnostics initialization(2) Could not create the Java virtual machine. # echo 1 > /proc/sys/vm/legacy_va_layout # /opt/IBMJava2-131/jre/bin/java -version Segmentation fault Expected Results: java version "1.3.1" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1) Classic VM (build 1.3.1, J2RE 1.3.1 IBM build cxia32131-20040527a (JIT enabled: jitc)) Additional info:
This also happens under IBMJava2-SDK-1.4.2-0.0. Sun's 1.4.2 SDK functions correctly. IBM SDKs can be downloaded here: http://www-106.ibm.com/developerworks/java/jdk/linux140/
Use LD_ASSUME_KERNEL=2.2.5 as a workaround.
I tried that, it worked for the previous kernel, not for 2.6.8
The previous kernel (2.6.7-1.494.2.2) did not require a workaround for me. It was only after upgrading to 2.6.8-1.521 that IBM's SDK started breaking. Here is the workaround in action: ----- bart@omega Tue Aug 31 15:29:30 /opt/IBMJava2-142/bin $ uname -r 2.6.8-1.521 bart@omega Tue Aug 31 15:30:50 /opt/IBMJava2-142/bin $ rpm -qa IBMJ* IBMJava2-SDK-1.4.2-0.0 bart@omega Tue Aug 31 15:31:05 /opt/IBMJava2-142/bin $ ./java -version JVMDG080: Cannot find class com/ibm/jvm/Trace JVMXM012: Error occurred in final diagnostics initialization Could not create the Java virtual machine. bart@omega Tue Aug 31 15:31:18 /opt/IBMJava2-142/bin $ LD_ASSUME_KERNEL=2.2.5 ./java -version java version "1.4.2" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2) Classic VM (build 1.4.2, J2RE 1.4.2 IBM build cxia321420-20040626 (JIT enabled: jitc)) -----
That works for the Java 1.4.2, but my problem is with Java 1.3.1, same steps as you used for 1.4.2: $ uname -r 2.6.8-1.521 $ rpm -qa IBMJ* IBMJava2-JRE-1.3.1-7.0 $ ./java -version JVMDG080: Cannot find class com/ibm/jvm/Trace Error occurred in diagnostics initialization(2) Could not create the Java virtual machine. $ LD_ASSUME_KERNEL=2.2.5 ./java -version JVMDG080: Cannot find class com/ibm/jvm/Trace Error occurred in diagnostics initialization(2) Could not create the Java virtual machine.
the real issue is an execshield bug. see if this helps: echo 0 > /proc/sys/kernel/exec-shield this is fixed in 541 and higher, but they aren't in rawhide yet I don't believe
That appears to solve the problem: # /opt/IBMJava2-131/jre/bin/java -version JVMDG080: Cannot find class com/ibm/jvm/Trace Error occurred in diagnostics initialization(2) Could not create the Java virtual machine. # echo 0 > /proc/sys/kernel/exec-shield # /opt/IBMJava2-131/jre/bin/java -version java version "1.3.1" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1) Classic VM (build 1.3.1, J2RE 1.3.1 IBM build cxia32131-20040527a (JIT enabled: jitc))
mass update for old bugs: Is this still a problem with the 2.6.9 based update kernel ?
java-1.4.2-ibm-1.4.2.0-1jpp_8rh seems to work well together with kernel-smp-2.6.9-1.681_FC3
The newest kernel seems to fix the issue. I've since upgraded to FC3, but java 1.3.1 seems to be playing nice with the new kernel: $ uname -r 2.6.9-1.681_FC3 $ /opt/IBMJava2-131/jre/bin/java -version java version "1.3.1" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1) Classic VM (build 1.3.1, J2RE 1.3.1 IBM build cxia32131-20040527a (JIT enabled: jitc))
# uname -r 2.6.11-1.35_FC3smp # cat /etc/redhat-release Fedora Core release 3 (Heidelberg) # pwd /opt/IBM/Workplace/AppServer/java/jre/bin # ./java -version JVMDG080: Cannot find class com/ibm/jvm/Trace Error occurred in diagnostics initialization(2) Could not create the Java virtual machine. # export LD_ASSUME_KERNEL=2.2.6 # ./java -version JVMDG080: Cannot find class com/ibm/jvm/Trace Error occurred in diagnostics initialization(2) Could not create the Java virtual machine. # unset LD_ASSUME_KERNEL # cat /proc/sys/kernel/exec-shield 2 # echo 0 > /proc/sys/kernel/exec-shield # ./java -version java version "1.3.1" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1) Classic VM (build 1.3.1, J2RE 1.3.1 IBM build cxia32131-20040527a (JIT enabled: jitc)) # echo BINGO BINGO # echo 2 > /proc/sys/kernel/exec-shield # ./java -version JVMDG080: Cannot find class com/ibm/jvm/Trace Error occurred in diagnostics initialization(2) Could not create the Java virtual machine.
... and upgrading to the latest FC3 updates kernel resolves this for me. I notice that the default value for exec-shield has changed from 2 to 1. # uname -r 2.6.12-1.1372_FC3smp # cat /proc/sys/kernel/exec-shield 1 # pwd /opt/IBM/Workplace/AppServer/java/jre/bin # ./java -version java version "1.3.1" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1) Classic VM (build 1.3.1, J2RE 1.3.1 IBM build cxia32131-20040527a (JIT enabled: jitc))