JDK-5079431 : IA64 - JVM crashes on Itanium 2 and AS3.0 box in 1.5b55 when stackoverflow occurs
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 5.0
  • Priority: P3
  • Status: Closed
  • Resolution: Won't Fix
  • OS: linux_redhat_3.0
  • CPU: x86
  • Submitted: 2004-07-28
  • Updated: 2005-06-13
  • Resolved: 2005-06-13
Description
When the attached .java and .cpp are executed in Linux/Itanium bix,
an crash occurs as the attached hs log files(crash-logs-142-tiger.tar.Z)

REPRODUCE:
 1. Please compile J200314.java in javac and 
    NativeCall_0005fOverflow_0005fand_0005fDeopt.c and NativeCall_0005fOverflow_0005fand_0005fDeopt.c
    in gcc on Linux (IA64) Box.
    
 2. Invoke 
     "java -Djava.library.path=. -XX:CompileOnly=NativeCall_Overflow_and_Deopt.compiled J200314"
     
     
CONFIGURATION:
   MPU : Intel Itenium 2
   OS  : Red Hat Enterprise Linux AS 3.0(Japanese)
   JRE : 1.4.2_02 and 1.5.0-beta3-b55
     
 
NOTE:
 The crash becomes not to occur when the following code block(FROM - TO)
 is added.
 
 ====== line# 2580 in interpreter_ia64.cpp ===
 ....
  __ call_VM_leaf(CAST_FROM_FN_PTR(address,
InterpreterRuntime::create_StackOverflowError), GR4_thread);
  __ get_vm_result(GR8_exception);

  __ add(pending_exception_addr, thread_(pending_exception));
  __ st8(pending_exception_addr, GR8_exception);

  { /* FROM */
    Label L;
    const PredicateRegister is_recursive_call = PR15_SCRATCH;
    __ cmp(is_recursive_call, PR0, 0,  GR_Iprev_state, Assembler::notEqual);
    __ br(is_recursive_call, L);
    __ call_VM_leaf(CAST_FROM_FN_PTR(address,
       SharedRuntime::exception_handler_for_return_address), GR_Lsave_RP);
    __ add(pending_exception_addr, thread_(pending_exception));
    __ mov(GR10, GR_RET);
    __ ld8(GR8_exception, pending_exception_addr);
    __ st8(pending_exception_addr, GR0);
    __ mov(GR9_issuing_pc, GR_Lsave_RP);
    __ mov(GR_Lsave_RP, GR10);
    __ bind(L);
  } /* TO */

  // Unwind to caller's interpreter state.
  __ pop_full_frame();
  __ ret();
  
  ......
=============================================

Comments
EVALUATION I verified that this bug still exists in the latest Tiger 1.5 B60 although the symptoms are quite different. Here is the error we get using 1.5 B60. It does appear that we should be unwinding when we get the stack overflow rather than continue processing the error. $JAVA_HOME/bin/java_g -XX:CompileOnly=NativeCall_Overflow_and_Deopt.compiled J200314 VM option 'CompileOnly=NativeCall_Overflow_and_Deopt.compiled' # To suppress the following error report, specify this argument # after -XX: or in .hotspotrc: SuppressErrorAt=/vframeArray.cpp:151] # # An unexpected error has been detected by HotSpot Virtual Machine: # # Internal Error (/BUILD_AREA/jdk1.5.0/hotspot/src/share/vm/runtime/vframeArray.cpp, 151), pid=25146, tid=2305843011058940112 # # Java VM: Java HotSpot(TM) 64-Bit Server VM (1.5.0-beta3-b60-debug mixed mode) # # Error: shouldn't get exception during monitorenter # An error report file with more information is saved as hs_err_pid25146.log ###@###.### 2004-07-29 ###@###.### 2004-11-17 16:38:37 GMT This bug has been closed as "Will Not Fix" due to a strategic redirection of resources. Bugs which are escalations from external customers will continue to be addressed by the support team. Internal customers may escalate bugs by filing them as priority 1 (P1) bugs. ###@###.### 2005-06-13 13:58:26 GMT
2005-06-13