JDK-6193413 : JCK: FATAL ERROR in native method: JNI call made with exception pending
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 1.4.2_07
  • Priority: P1
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2004-11-10
  • Updated: 2011-05-12
  • Resolved: 2004-11-12
Related Reports
Duplicate :  
Relates :  
Relates :  
Description
FULL PORDUCT VERSION :
java version "1.4.2_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b02)
Java HotSpot(TM) Client VM (build 1.4.2_07-b02, mixed mode)

FULL OPERATING SYSTEM :
Microsoft Windows XP Professional Version 5.1 
and
Solaris 5.8 sun4u sparc SUNW, Ultra-60

A DESCRIPTION OF THE PROBLEM :
This error occurs when executing a JCK-runtime test using the flag Xcheck:jni
Alot of tests failing due to this problem. 
Testing with 1.4.2_07-b1 does *not* show this problem.
Regression present in b02.

could be releated to bug fix 4664556

ERROR MESSAGES THAT OCCUR:
FATAL ERROR in native method: JNI call made with exception pending 	at java.io.ObjectStreamClass.hasStaticInitializer(Native Method) 	at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1557) 	at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:47) 	at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:173) 	at java.security.AccessController.doPrivileged(Native Method) 	at java.io.ObjectStreamClass.getSerialVersionUID(ObjectStreamClass.java:170) 	at java.io.ObjectStreamClass.writeNonProxy(ObjectStreamClass.java:557) 	at java.io.ObjectOutputStream.writeClassDescriptor(ObjectOutputStream.java:591) 	at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1142) 	at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1100) 	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1179) 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1050) 	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332) 	at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:367) 	at java.lang.Throwable.writeObject(Throwable.java:648) 	- locked <0x1004c5b8> (a java.awt.AWTError) 	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:324) 	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:809) 	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1296) 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247) 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278) 	at javasoft.sqe.serial.util.Convert.objectToStreamObject(Convert.java:30) 	at javasoft.sqe.tests.api.java.awt.AWTError.serial.ConstructorTests.serial2001(ConstructorTests.java:60) 	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:324) 	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.awt.AWTError.serial.ConstructorTests.main(ConstructorTests.java:30) 

REPRODUCIBILITY :
This bug can be reproduced always.


###@###.### 2004-11-10 17:02:52 GMT
###@###.### 2004-11-11 11:33:41 GMT
###@###.### 2004-11-11 12:00:21 GMT
###@###.### 2004-11-12 15:52:45 GMT

Comments
EVALUATION Running the test with debug jvm and -XX:+TraceExceptions shows: ... Exception <a 'java/lang/NoSuchMethodException'> (0xf0d64020) thrown in interpreter method <{method} 'getInheritableMethod' '(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method;' in 'java/io/ObjectStreamClass'> at bci 15 for thread 0x0004d7a0 Exception <a 'java/lang/NoSuchMethodError'> (0xf0d64450 ) thrown [/export1/jdk142-update/ws/fcs/hotspot/src/share/vm/prims/jni.cpp, line 887] for thread 0x0004d7a0 FATAL ERROR in native method: JNI call made with exception pending at java.io.ObjectStreamClass.hasStaticInitializer(Native Method) at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1557) at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:47) at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:173) at java.security.AccessController.doPrivileged(Native Method) ... src/share/vm/prims/jni.cpp: 886 if (m == NULL || (m->is_static() != is_static)) { 887 THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), name_str); 888 } ###@###.### 2004-11-12 17:00:21 GMT And from Mingyao.Yang: 1.4.2 code of Java_java_io_ObjectStreamClass_hasStaticInitializer in src/share/native/java/io/ObjectStreamClass.c isn't right. Look for 1.5's version. This should be bug 4803744. And sure enough... 50,51c50,52 < if ((*env)->IsInstanceOf(env, th, noSuchMethodErrCl)) { < (*env)->ExceptionClear(env); /* normal return */ --- > (*env)->ExceptionClear(env); /* normal return */ > if (!(*env)->IsInstanceOf(env, th, noSuchMethodErrCl)) { > (*env)->Throw(env, th); 71,72c72,74 < if ((*env)->IsInstanceOf(env, th, noSuchMethodErrCl)) { < (*env)->ExceptionClear(env); /* normal return */ --- > (*env)->ExceptionClear(env); /* normal return */ > if (!(*env)->IsInstanceOf(env, th, noSuchMethodErrCl)) { > (*env)->Throw(env, th); ###@###.### 2004-11-12 19:43:52 GMT
10-11-2004