Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6448241
Votes 0
Synopsis exception oop left in TLS during exception lookup causing assertions if class loading occurs
Category hotspot:compiler1
Reported Against
Release Fixed hs10(b03), 6u4(b03) (Bug ID:2171804) , 7(b03) (Bug ID:2176737)
State 10-Fix Delivered, bug
Priority: 4-Low
Related Bugs
Submit Date 12-JUL-2006
Description
/net/vmsqe/export/nightly/mantis/DTWS/results/07-10-06/ClientVM/solx86/comp/C2_Baseline/nsk.stress-11-NIGHTLY-C2_Baseline-ClientVM-comp-solx86-2006-07-11-00-11-59/hs_err_pid28531.log ./

foundation% /net/jano/export/disk05/hotspot/bin/hs_err --jvm=./libjvm.so hs_err_pid28531.log
#=============== DEBUG MESSAGE: exception oop must be empty ================
#
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  Internal Error (/net/prt-solx86-q1-5/PrtBuildDir/workspace/src/cpu/i486/vm/assembler_i486.cpp, 3343), pid=28531, tid=214
#
# Java VM: Java HotSpot(TM) Client VM (20060710121006.kvn.main_to_c2_baseline-debug compiled mode, sharing)
#
# Error: assert(false,"DEBUG MESSAGE")
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------

Current thread (0x081a5800):  JavaThread "Thread-204" [_thread_in_vm, id=214]

Stack: [0xca9ca000,0xcaa1a000),  sp=0xcaa178f8,  free space=310k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x914997];;  __1cHVMErrorOreport_and_die6M_v_+0x517
V  [libjvm.so+0x2991d7];;  __1cYreport_assertion_failure6Fpkci1_v_+0x5f
V  [libjvm.so+0x8ce26];;  __1cOMacroAssemblerFdebug6Fiiiiiiiiipc_v_+0x356
v  ~RuntimeStub::unwind_exception Runtime1 stub
J  sun.reflect.misc.MethodUtil.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;
J  java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class;
J  java.lang.ClassLoader.loadClassInternal(Ljava/lang/String;)Ljava/lang/Class;
v  ~StubRoutines::call_stub
V  [libjvm.so+0x3798f5];;  __1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x69d
V  [libjvm.so+0x72ef1b];;  __1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27
V  [libjvm.so+0x37922c];;  __1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x40
V  [libjvm.so+0x378ab7];;  __1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_+0x6f
V  [libjvm.so+0x378cf6];;  __1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_+0x12e
V  [libjvm.so+0x8135a5];;  __1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__+0x391
V  [libjvm.so+0x80e6e5];;  __1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__nIklassOop__+0x15c1
V  [libjvm.so+0x80a631];;  __1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__nIklassOop__+0x189
V  [libjvm.so+0x809b82];;  __1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_nGHandle_2bpnGThread__nIklassOop__+0x2e
V  [libjvm.so+0x28731a];;  __1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__nIklassOop__+0x942
V  [libjvm.so+0x166d35];;  __1cTconstantPoolOopDescIklass_at6MipnGThread__nIklassOop__+0x18d
V  [libjvm.so+0x6e0d63];;  __1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_+0x7f3
V  [libjvm.so+0x7b2a03];;  __1cNSharedRuntimebCcompute_compiled_exc_handler6FpnHnmethod_pCrnGHandle_bb_3_+0x32b
V  [libjvm.so+0x15d938];;  __1cbFexception_handler_for_pc_helper6FpnKJavaThread_pnHoopDesc_pCrpnHnmethod__4_+0xf3c
V  [libjvm.so+0x15daf6];;  __1cIRuntime1Yexception_handler_for_pc6FpnKJavaThread__pC_+0x72
v  ~RuntimeStub::handle_exception_nofpu Runtime1 stub
J  sun.reflect.GeneratedMethodAccessor292.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
J  sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
J  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
J  sun.reflect.misc.MethodUtil.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
.
Posted Date : 2006-07-12 21:34:42.0

Here's a test case for this:

/*
 * @test %W% %E%
 * @bug 6448241
 * @run main/othervm -Xcomp -Xverify:none eoop
 */

public class eoop {
    static class UnloadedThrowable extends RuntimeException {
        static boolean throwIt = true;
        static {
            if (throwIt)
                throw new InternalError("can't load this");
        }
    }

    public static void main(String[] args) {
        try {
            throw new InternalError("throw me");
        } catch (UnloadedThrowable e) {
        }
    }
}
Posted Date : 2006-07-12 21:37:14.0
Work Around
N/A
Evaluation
When calling out to do the lookup we should clear out the exception_oop and exception_pc.  We already restore exception_oop on return and we probably should restore exception_pc though we're probably done with it at that point.
Posted Date : 2006-07-12 21:37:14.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang