JDK-6195764 : Crashes at Function name=JVM_GetCPFieldSignatureUTF in jdk 1.3.1_13
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 1.3.1_13
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_8
  • CPU: sparc
  • Submitted: 2004-11-16
  • Updated: 2010-08-18
  • Resolved: 2005-10-28
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
1.3.1_17 b01Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Description
The following source code crashes at 1.3.1_13

public class NoneTest extends Thread {
    void foo(String x) {
        try {
            x.toString();
        } catch (Exception ee) { }
    }

    public void run() {
        for (;;) {
            for (int i = 1; i < 10000; i++) {
                foo((i % 100 == 0)? "" : null);
            }
        }
    }

    public static void main(String[] args) throws InterruptedException {
        Thread t = new NoneTest();
        t.start();
        Thread.sleep(20000);    // 20 sec
        System.out.println("bye");
        // t.interrupt();
        Thread.sleep(2000);     // 2 sec
        System.exit(0);
    }
}

Another exception has been detected while we were handling last error.
Unexpected Signal : 11 occurred at PC=0xFED2C8CC
Function name=JVM_GetCPFieldSignatureUTF
Library=/net/nemo.singapore/export/home/fschoong/bin/j2sdk1_3_1_13/jre/lib/sparc/server/libjvm.so

Current Java thread:
Dumping information about last error:
ERROR REPORT FILE = (N/A)
PC                = 0xfed2c8cc
SIGNAL            = 11
FUNCTION NAME     = JVM_GetCPFieldSignatureUTF
LIBRARY NAME      = /net/nemo.singapore/export/home/fschoong/bin/j2sdk1_3_1_13/jre/lib/sparc/server/libjvm.so
Please check ERROR REPORT FILE for further information, if there is any.
Good bye.
Abort (core dumped)


###@###.### 2004-11-16 06:22:53 GMT

Comments
EVALUATION The first part of this is easy... By avoiding the OSR compilation we successfully. However if you run the testcase with -Xcomp you will get a SIGBUS with the following: [7] PhaseIdealLoop::Dominators(this = 0xf21fecf8), line 393 in "domgraph.cpp" [8] PhaseIdealLoop::PhaseIdealLoop(this = 0xf21fecf8, igvn = CLASS, verify_me = (nil)), line 967 in "loopnode.cpp" [9] Compile::Optimize(this = 0xf21ff810), line 950 in "compile.cpp" [10] Compile::Compile(this = 0xf21ff810, ci_env = 0xf21ffc0c, ci_scope = 0x144570, target = 0x14447c, osr_bci = 0x8, subsume_loads = 0x1, reuse_env = 0), line 411 in "compile.cpp" [11] C2Compiler::compile_method(this = 0x1327a0, env = 0xf21ffc0c, scope = 0x144570, target = 0x14447c, entry_bci = 0x8, reuse_env = 0), line 28 in "c2compiler.cpp" [12] CompileBroker::invoke_compiler_on_method(task = 0x142eb0), line 1191 in "compileBroker.cpp" [13] CompileBroker::compiler_thread_loop(), line 1040 in "compileBroker.cpp" [14] compiler_thread_entry(thread = 0x142280, __the_thread__ = 0x142280), line 2138 in "thread.cpp" [15] JavaThread::thread_main_inner(this = 0x142280), line 1148 in "thread.cpp" [16] JavaThread::run(this = 0x142280), line 1132 in "thread.cpp" [17] _start(data = 0x142280), line 487 in "os_solaris.cpp" And the following reference is the cause: [e/bugtraq/6195764:DBX] print i i = 0xf [e/bugtraq/6195764:DBX] print ntarjan[15] ntarjan[15] = { NTarjan::_control = 0x1d73a4 NTarjan::_semi = 0xfU NTarjan::_size = 0x1U NTarjan::_parent = 0x19a180 NTarjan::_label = 0x19a1ac NTarjan::_ancestor = 0x19a180 NTarjan::_child = 0x199f18 NTarjan::_dom = 0xabababab __________ NTarjan::_bucket = 0x19a1ac NTarjan::_dom_child = 0xabababab NTarjan::_dom_next = 0xabababab 390 for( i=2; i < dfsnum; i++ ) { // DFS order 391 NTarjan *w = &ntarjan[i]; 392 assert(w->_control != NULL,"Bad DFS walk"); 393 assert ( (unsigned int)w->_dom != 0xabababab , " unset _dom data. "); 394 if( w->_dom != &ntarjan[w->_semi] ) 395 w->_dom = w->_dom->_dom; ________________________ 396 w->_dom_next = w->_dom_child = NULL; // Initialize for building tree later (NB Iadded some asserts to see where the ref was , in the gate its line 393.) Any insight as to where this might be going wrong appreciated... ###@###.### 2005-04-25 22:26:20 GMT
16-11-2004

WORK AROUND exclude NoneTest run in .hotspot_compiler or use jdk 1.4.2 bash-2.05# /net/nemo.singapore/export/home/fschoong/bin/j2sdk1.4.2_06/bin/java -server NoneTest bye or use -client ( C1 ) java -client NoneTest or use -Xint eg bash-2.05# /net/nemo.singapore/export/home/fschoong/bin/j2sdk1_3_1_13/bin/java -client NoneTest bye bash-2.05# /net/nemo.singapore/export/home/fschoong/bin/j2sdk1_3_1_13/bin/java -server -Xint NoneTest bye ###@###.### 2004-11-16 06:22:53 GMT ###@###.### 2004-11-16 06:25:56 GMT
16-11-2004