JDK-6213473 : JCK1.5: JNI call made with exception when -Xcheck:jni is used.
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 5.0,5.0u2,6
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: linux,solaris
  • CPU: generic,x86
  • Submitted: 2005-01-03
  • Updated: 2012-10-08
  • Resolved: 2005-02-09
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other JDK 6
5.0u3 b04Fixed 6Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Description
JDK            : 5.0, 5.0u1, 5.0u2, 6.0
JCK            : jck1.5
Platform[s]    : Sparc Sol10 and RH3.0 was tested. (windows 2000 passed)
switch/Mode    : -Xcheck:jni ( passed with default)
Note:          : This switch didn't tested on 5.0 or 5.0u1
JCK test owner : http://javaweb.eng/jck/usr/owners.jto
Failing Test   : 
 api/java_applet/Applet/index.html#ACMethods 
 api/java_applet/Applet/index.html#NewAudioClip
 api/java_lang/Thread/index.html#isAlive 
 api/java_lang/Thread/index.html#stop1
 api/javax_sound/midi/ControllerEventListener/index.html#Listener
 api/javax_sound/midi/Instrument/index.html#getCtor
 api/javax_sound/midi/MetaEventListener/index.html#Listener
 api/javax_sound/midi/MidiChannel/index.html#MidiChannel
 api/javax_sound/midi/MidiChannel/index.html#Mono
 api/javax_sound/midi/MidiChannel/index.html#MuteOmni
 api/javax_sound/midi/MidiChannel/index.html#PitchBend
 api/javax_sound/midi/MidiChannel/index.html#Pressure
 api/javax_sound/midi/MidiChannel/index.html#Program
 api/javax_sound/midi/MidiChannel/index.html#Solo
 api/javax_sound/midi/MidiChannel/index.html#control
 api/javax_sound/midi/MidiChannel/index.html#localControl
 api/javax_sound/midi/MidiDevice/index.html#get
 api/javax_sound/midi/MidiDevice/index.html#openClose
 api/javax_sound/midi/MidiDevice/index.html#recvTransm
 api/javax_sound/midi/MidiSystem/index.html#MidiSystem
 api/javax_sound/midi/MidiSystem/index.html#get
 api/javax_sound/midi/MidiSystem/index.html#getFile
 api/javax_sound/midi/Receiver/index.html#Receiver
 api/javax_sound/midi/Sequencer/index.html#Listener
 api/javax_sound/midi/Sequencer/index.html#Loop
 api/javax_sound/midi/Sequencer/index.html#MuteSolo
 api/javax_sound/midi/Sequencer/index.html#Play
 api/javax_sound/midi/Sequencer/index.html#Record
 api/javax_sound/midi/Sequencer/index.html#Sequencer
 api/javax_sound/midi/Sequencer/index.html#Sync
 api/javax_sound/midi/Sequencer/index.html#Tempo
 api/javax_sound/midi/Soundbank/index.html#Instrument
 api/javax_sound/midi/Soundbank/index.html#Resource
 api/javax_sound/midi/Soundbank/index.html#Soundbank
 api/javax_sound/midi/Soundbank/index.html#get
 api/javax_sound/midi/SoundbankResource/index.html#getCtor
 api/javax_sound/midi/SoundbankResource/index.html#getData
 api/javax_sound/midi/SoundbankResource/index.html#getName
 api/javax_sound/midi/Synthesizer/index.html#Synthesizer
 api/javax_sound/midi/Synthesizer/index.html#Voice
 api/javax_sound/midi/Synthesizer/index.html#getInstruments
 api/javax_sound/midi/Synthesizer/index.html#load
 api/javax_sound/midi/Synthesizer/index.html#remap
 api/javax_sound/midi/Synthesizer/index.html#unload
 api/javax_sound/sampled/AudioInputStream/index.html#Ctor
 api/javax_sound/sampled/AudioSystem/index.html#EaseOfUse
 api/javax_sound/sampled/AudioSystem/index.html#getLine
 api/javax_sound/sampled/AudioSystem/index.html#getMixer
 api/javax_sound/sampled/AudioSystem/index.html#getMixerInfo
 api/javax_sound/sampled/AudioSystem/index.html#getSourceLineInfo
 api/javax_sound/sampled/AudioSystem/index.html#getTargetLineInfo
 api/javax_sound/sampled/AudioSystem/index.html#isLineSupported 
 api/javax_sound/sampled/Clip/index.html#ClipTests
 api/javax_sound/sampled/Line/index.html#Line
 api/javax_sound/sampled/Line/index.html#Open
 api/javax_sound/sampled/LineListener/index.html#LineListener
 api/javax_sound/sampled/Mixer/index.html#Mixer
 api/javax_sound/sampled/Mixer/index.html#getLine
 api/javax_sound/sampled/Mixer/index.html#getMaxLines
 api/javax_sound/sampled/Mixer/index.html#getSourceLineInfo
 api/javax_sound/sampled/Mixer/index.html#getSourceLines
 api/javax_sound/sampled/Mixer/index.html#getTargetLineInfo
 api/javax_sound/sampled/Mixer/index.html#getTargetLines 
 api/javax_sound/sampled/Mixer/index.html#isLineSupported
 api/javax_sound/sampled/Mixer/index.html#isSynchronizSupported
 api/javax_sound/sampled/Mixer/index.html#open
 api/javax_sound/sampled/Mixer/index.html#synchronize
 api/javax_sound/sampled/Mixer/index.html#unsynchronize
 api/javax_sound/sampled/SourceDataLine/index.html#SourceDataLine
 api/javax_sound/sampled/SourceDataLine/index.html#open
 api/javax_sound/sampled/SourceDataLine/index.html#write
 api/javax_sound/sampled/TargetDataLine/index.html#TargetDataLine
 api/javax_sound/sampled/TargetDataLine/index.html#open
 api/javax_sound/sampled/TargetDataLine/index.html#read 

VM failures:
-------------

unexpected exit code: exit code 134
 
vm/jdwp/ThreadReference/Stop/stop001/stop001.html
vm/jni/NewWeakGlobalRef/nwgr001/nwgr00101m1/nwgr00101m1.html
vm/jvmti/GetCurrentContendedMonitor/gccm001/gccm00102/gccm00102.html 

unexpected exit code: exit code 139
 
vm/jvmti/SetJNIFunctionTable/sjni001/sjni00101/sjni00101.html


Test source location:
=====================


/net/koori.sfbay/onestop/jck/1.5/latest/binaries/JCK-runtime-15/tests/api/java_applet/Applet/ACMethodsTests.java


jtr file location:
==================
/net/cady/export/dtf/unified/results/tiger_u2/b04/jck/jck-jck_runtime-rhas3_amd64_Xcheck:jni-2005-01-03-10-19-10-0736/workDir/api/java_applet/Applet/index_ACMethods.jtr

It may move to 
/net/jsqalab/export/results/5.0u2/b04/jck/jck-jck_runtime-rhas3_amd64_Xcheck:jni-2005-01-03-10-19-10-0736/workDir/api/java_applet/Applet/index_ACMethods.jtr


How to reproduce:
====================
ACMethods.ksh -Xcheck:jni
--------Script START---------------------
#!/bin/ksh
#
# README: Modify these threev variables to fit your need:
#
#    - ${executeClass}
#    - ${excludeCmd}
#    - ${executeClassArgs}
#    - ${executeContextArgs}
#    - ${executeTestURL}
#
#################################

SWITCH=${1+$@}
A=""
executeClass="javasoft.sqe.tests.api.java.applet.Applet.ACMethodsTests"

excludeCmd=""
executeClassArgs=""
executeteTestURL="-TestURL file:///net/jtgb4u4c.sfbay/export/sail1/testarea/jck1.5.b28/JCK-runtime-15/tests/api/java_applet/Applet/index.html#ACMethods"


#executeContextArgs is used for vm testing.
executeContextArgs=""



#This is where you want the JDK to be use.
#Example:  JDK=/net/jdk/export/disk8/local.java/jdk1.3.1
#/usr/local/java/jdk1.4.0_beta_refresh


#This is where you want the JCK to be use.
#Example:  TESTBASE=/net/jdk/export/disk8/local.java/jck1.3a


case `uname -s` in
  SunOS|Linux)
   DRIVE=/net/cady/export
   ;;
 *)
   # Map your drive y: to \\cady\export
   DRIVE="y:"
   ;; 
esac  

TESTBASE=$DRIVE/net/koori/onestop/jck/1.5/latest/binaries
JCK=${TESTBASE}/JCK-runtime-15
TESTBASE2=$DRIVE/net/jtgb4u4c/export/sail1/testarea/jck1.5
JCK2=${TESTBASE2}/JCK-runtime-15

JDK=$DRIVE/jdk1.6.0/promoted/all/b17/binaries/

#JDK=$DRIVE/jdk1.5.0_02/promoted/all/b04/binaries/
#JDK=$DRIVE/jdk1.5.0_01/latest/binaries/
#JDK=$DRIVE/jdk1.5.0/latest/binaries/
#JDK=$DRIVE/jdk1.5.0/latest/binaries/


case `uname -s` in
  SunOS)
   ARCH=`uname -p`
   case $ARCH in
    sparc)
      sharedJDK=$JDK/solaris-sparcv9
      LIB_OS=SunOS.sparc
      ;;
    i386)
      sharedJDK=$JDK/solaris-i586
      LIB_OS=SunOS.x86
      ;;
   esac
   ;;
  Linux)
   sharedJDK=$JDK/linux-i586
   LIB_OS=linux.i386
   ;;
  *)
   sharedJDK=$JDK/windows-i586
   ARCH=wintel
   LIB_OS=win32
   ;;
esac

case `uname -s` in
 SunOS | Linux)

  CLASSPATH=${JCK}/classes:${JCK}/javatest.jar
  PATH=$sharedJDK/bin:$JDK/bin:$PATH
  ;;
 *)
  CLASSPATH="${JCK}/classes;${JCK}/javatest.jar"
  PATH="$sharedJDK/bin;$JDK/bin;$CLASSPATH;$PATH"
  ;;

esac


#DISPLAY=${DISPLAY-$HOST:0.0}

if `echo $SWITCH|grep "\-d64" >/dev/null`; then
  LD_LIBRARY_PATH=${JCK2}/lib/sparcv9
else
  LD_LIBRARY_PATH=${JCK2}/lib/$LIB_OS:$JCK2/lib/$LIB_OS/jmx
fi

export PATH CLASSPATH  DISPLAY LD_LIBRARY_PATH

echo $LD_LIBRARY_PATH

echo $sharedJDK
echo $CLASSPATH
java ${SWITCH} -version

((x=0))
while (( $x != 1 ))
do

echo testing $x
echo $SWITCH
#JDK=/export/jdk/b13/solaris-i586/jdk1.6.0/bin
java ${SWITCH} -verify $A -Xfuture -cp $CLASSPATH  -Djava.security.policy=${JCK}/lib/jck.policy  -Djava.security.auth.policy=${JCK}/lib/java.auth.policy  -Djava.security.auth.login.config=${JCK}/lib/java.login.config ${executeClass}  ${excludeCmd} ${executeClassArgs} ${executeContextArgs} ${executeteTestURL}

echo $?
(( x = $x + 1 ))
done


--------Script END----------------------

Test output:
=============
FATAL ERROR in native method: JNI call made with exception pending
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
	- locked <0x0000002adaa60530> (a java.util.Vector)
	- locked <0x0000002adaa605c0> (a java.util.Vector)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1668)
	at java.lang.Runtime.loadLibrary0(Runtime.java:822)
	- locked <0x0000002adaa74530> (a java.lang.Runtime)
	at java.lang.System.loadLibrary(System.java:992)
	at com.sun.media.sound.JSSecurityManager.loadLibrary(JSSecurityManager.java:74)
	at com.sun.media.sound.Platform.loadLibraries(Platform.java:162)
	at com.sun.media.sound.Platform.<clinit>(Platform.java:75)
	at com.sun.media.sound.Toolkit.getPCMConvertedAudioInputStream(Toolkit.java:197)
	at com.sun.media.sound.JavaSoundAudioClip.loadAudioData(JavaSoundAudioClip.java:290)
	at com.sun.media.sound.JavaSoundAudioClip.<init>(JavaSoundAudioClip.java:93)
	at sun.applet.AppletAudioClip.createAppletAudioClip(AppletAudioClip.java:108)
	at sun.applet.AppletAudioClip.<init>(AppletAudioClip.java:49)
	at java.applet.Applet.newAudioClip(Applet.java:273)
	at javasoft.sqe.tests.api.java.applet.Applet.NewStubAudioClip.<init>(NewStubAudioClip.java:26)
	at javasoft.sqe.tests.api.java.applet.Applet.StubAppletContext.getAudioClip(StubAppletContext.java:43)
	at java.applet.Applet.getAudioClip(Applet.java:289)
	at javasoft.sqe.tests.api.java.applet.Applet.ACMethodsTests.Applet20131(ACMethodsTests.java:273)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at javasoft.sqe.javatest.lib.MultiTest.invokeTestCase(MultiTest.java:399)
	at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:195)
	at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:127)
	at javasoft.sqe.tests.api.java.applet.Applet.ACMethodsTests.main(ACMethodsTests.java:29)
result: Failed. unexpected exit code: exit code 134
Specific Machine Info:
=====================
For Solaris[sparc/x86] ->
jtg-s121>uname -a
SunOS jtg-s121 5.10 s10_74 sun4u sparc SUNW,Ultra-60

For Linux ->
[dtftest@bela jck]$ uname -a
Linux bela 2.4.21-9.ELsmp #1 SMP Thu Jan 8 16:52:31 EST 2004 x86_64 x86_64 x86_64 GNU/Linux


###@###.### 2005-1-03 20:36:25 GMT
###@###.### 2005-1-06 18:08:17 GMT


###@###.### 2005-1-24 22:36:45 GMT

Comments
EVALUATION This bug occurs after a call to JVM_LoadLibrary failes to find a native library. The code in the VM throws an exception and return to the native code in ClassLoader.c. This code then calls a JNI function to SetLongField which asserts that there should not be any pending exceptions. This bug has been in the system since additions to -Xcheck:jni were implementeed in 1.4.2 There are several probles causing the list of tests to fail. These tests were fixed in 5.0u2 under CR 2122490 api/java_lang/Thread/index.html#isAlive api/java_lang/Thread/index.html#stop1 These tests were fixed in 5.0u2 under CR 5038903 api/java_applet/Applet/index.html#ACMethods api/java_applet/Applet/index.html#NewAudioClip api/javax_sound/midi/ControllerEventListener/index.html#Listener api/javax_sound/midi/Instrument/index.html#getCtor api/javax_sound/midi/MetaEventListener/index.html#Listener api/javax_sound/midi/MidiChannel/index.html#MidiChannel api/javax_sound/midi/MidiChannel/index.html#Mono api/javax_sound/midi/MidiChannel/index.html#MuteOmni api/javax_sound/midi/MidiChannel/index.html#PitchBend api/javax_sound/midi/MidiChannel/index.html#Pressure api/javax_sound/midi/MidiChannel/index.html#Program api/javax_sound/midi/MidiChannel/index.html#Solo api/javax_sound/midi/MidiChannel/index.html#control api/javax_sound/midi/MidiChannel/index.html#localControl api/javax_sound/midi/MidiDevice/index.html#get api/javax_sound/midi/MidiDevice/index.html#openClose api/javax_sound/midi/MidiDevice/index.html#recvTransm api/javax_sound/midi/MidiSystem/index.html#MidiSystem api/javax_sound/midi/MidiSystem/index.html#get api/javax_sound/midi/MidiSystem/index.html#getFile api/javax_sound/midi/Receiver/index.html#Receiver api/javax_sound/midi/Sequencer/index.html#Listener api/javax_sound/midi/Sequencer/index.html#Loop api/javax_sound/midi/Sequencer/index.html#MuteSolo api/javax_sound/midi/Sequencer/index.html#Play api/javax_sound/midi/Sequencer/index.html#Record api/javax_sound/midi/Sequencer/index.html#Sequencer api/javax_sound/midi/Sequencer/index.html#Sync api/javax_sound/midi/Sequencer/index.html#Tempo api/javax_sound/midi/Soundbank/index.html#Instrument api/javax_sound/midi/Soundbank/index.html#Resource api/javax_sound/midi/Soundbank/index.html#Soundbank api/javax_sound/midi/Soundbank/index.html#get api/javax_sound/midi/SoundbankResource/index.html#getCtor api/javax_sound/midi/SoundbankResource/index.html#getData api/javax_sound/midi/SoundbankResource/index.html#getName api/javax_sound/midi/Synthesizer/index.html#Synthesizer api/javax_sound/midi/Synthesizer/index.html#Voice api/javax_sound/midi/Synthesizer/index.html#getInstruments api/javax_sound/midi/Synthesizer/index.html#load api/javax_sound/midi/Synthesizer/index.html#remap api/javax_sound/midi/Synthesizer/index.html#unload api/javax_sound/sampled/AudioInputStream/index.html#Ctor api/javax_sound/sampled/AudioSystem/index.html#EaseOfUse api/javax_sound/sampled/AudioSystem/index.html#getLine api/javax_sound/sampled/AudioSystem/index.html#getMixer api/javax_sound/sampled/AudioSystem/index.html#getMixerInfo api/javax_sound/sampled/AudioSystem/index.html#getSourceLineInfo api/javax_sound/sampled/AudioSystem/index.html#getTargetLineInfo api/javax_sound/sampled/AudioSystem/index.html#isLineSupported api/javax_sound/sampled/Clip/index.html#ClipTests api/javax_sound/sampled/Line/index.html#Line api/javax_sound/sampled/Line/index.html#Open api/javax_sound/sampled/LineListener/index.html#LineListener api/javax_sound/sampled/Mixer/index.html#Mixer api/javax_sound/sampled/Mixer/index.html#getLine api/javax_sound/sampled/Mixer/index.html#getMaxLines api/javax_sound/sampled/Mixer/index.html#getSourceLineInfo api/javax_sound/sampled/Mixer/index.html#getSourceLines api/javax_sound/sampled/Mixer/index.html#getTargetLineInfo api/javax_sound/sampled/Mixer/index.html#getTargetLines api/javax_sound/sampled/Mixer/index.html#isLineSupported api/javax_sound/sampled/Mixer/index.html#isSynchronizSupported api/javax_sound/sampled/Mixer/index.html#open api/javax_sound/sampled/Mixer/index.html#synchronize api/javax_sound/sampled/Mixer/index.html#unsynchronize api/javax_sound/sampled/SourceDataLine/index.html#SourceDataLine api/javax_sound/sampled/SourceDataLine/index.html#open api/javax_sound/sampled/SourceDataLine/index.html#write api/javax_sound/sampled/TargetDataLine/index.html#TargetDataLine api/javax_sound/sampled/TargetDataLine/index.html#open api/javax_sound/sampled/TargetDataLine/index.html#read These bugs were fixed under this current bugid (6213473) vm/jdwp/ThreadReference/Stop/stop001/stop001.html vm/jni/NewWeakGlobalRef/nwgr001/nwgr00101m1/nwgr00101m1.html vm/jvmti/GetCurrentContendedMonitor/gccm001/gccm00102/gccm00102.html vm/jvmti/SetJNIFunctionTable/sjni001/sjni00101/sjni00101.html ###@###.### 2005-1-24 22:36:45 GMT
03-01-2005