JDK-7007639 : assert(!on_stack() || (allocated_on_res_area() ...) failed: growable array must be on stack ...
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs20
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2010-12-17
  • Updated: 2011-01-19
  • Resolved: 2010-12-17
Related Reports
Duplicate :  
Relates :  
Description
Application client

# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/tmp/workspace/jdk7-2-build-solaris-i586-product/jdk7/hotspot/src/share/vm/utilities/growableArray.hpp:103), pid=22065, tid=14
#  assert(!on_stack() || (allocated_on_res_area() || allocated_on_stack())) failed: growable array must be on stack if elements are not on arena and not on C heap
#
# JRE version: 7.0-b120
# Java VM: Java HotSpot(TM) Server VM (20.0-b03-fastdebug mixed mode solaris-x86 )

Current thread (0x0828c800):  JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=14, stack(0xedd7f000,0xeddff000)]

Stack: [0xedd7f000,0xeddff000],  sp=0xeddf8730,  free space=485k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x1d204fe];;  void VMError::report(outputStream*)+0x73e
V  [libjvm.so+0x1d21699];;  void VMError::report_and_die()+0x555
V  [libjvm.so+0xb00a04];;  void report_vm_error(const char*,int,const char*,const char*)+0x534
V  [libjvm.so+0xbf361f];;  PhiNode*ConnectionGraph::split_memory_phi(PhiNode*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x13ef
V  [libjvm.so+0xbf582c];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0xf90
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbf55a3];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0xd07
V  [libjvm.so+0xbf2834];;  PhiNode*ConnectionGraph::split_memory_phi(PhiNode*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x604
V  [libjvm.so+0xbf582c];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0xf90
V  [libjvm.so+0xbf55a3];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0xd07
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbf2834];;  PhiNode*ConnectionGraph::split_memory_phi(PhiNode*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x604
V  [libjvm.so+0xbf582c];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0xf90
V  [libjvm.so+0xbf2834];;  PhiNode*ConnectionGraph::split_memory_phi(PhiNode*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x604
V  [libjvm.so+0xbf582c];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0xf90
V  [libjvm.so+0xbf5fc5];;  Node*ConnectionGraph::find_inst_mem(Node*,int,GrowableArray<PhiNode*>&,PhaseGVN*)+0x1729
V  [libjvm.so+0xbfad12];;  void ConnectionGraph::split_unique_types(GrowableArray<Node*>&)+0x31ce
V  [libjvm.so+0xbff24f];;  bool ConnectionGraph::compute_escape()+0x1897
V  [libjvm.so+0xbfd730];;  void ConnectionGraph::do_analysis(Compile*,PhaseIterGVN*)+0x6dc
V  [libjvm.so+0x9c2390];;  void Compile::Optimize()+0x2fc
V  [libjvm.so+0x9babe7];;  Compile::Compile(ciEnv*,C2Compiler*,ciMethod*,int,bool,bool)+0x13d3
V  [libjvm.so+0x79f9f0];;  void C2Compiler::compile_method(ciEnv*,ciMethod*,int)+0x124
V  [libjvm.so+0x9d9bdb];;  void CompileBroker::invoke_compiler_on_method(CompileTask*)+0x1827
V  [libjvm.so+0x9d7623];;  void CompileBroker::compiler_thread_loop()+0xd27
V  [libjvm.so+0x1c18d46];;  void compiler_thread_entry(JavaThread*,Thread*)+0x2e
V  [libjvm.so+0x1c0af3d];;  void JavaThread::thread_main_inner()+0x179
V  [libjvm.so+0x1c0abed];;  void JavaThread::run()+0x619
V  [libjvm.so+0x184da01];;  java_start+0x711
C  [libc.so.1+0xbd663]  _thrp_setup+0x9b;;  _thrp_setup+0x9b
C  [libc.so.1+0xbd910]  _lwp_start+0x0;;  _lwp_start+0x0

Comments
EVALUATION Duplicate of 6993125. ConnectionGraph::split_memory_phi() { GrowableArray<uint> cur_input; <<<< allocate GrowableArray on stack and its array on resource area. 0xfd3f23af: split_memory_phi+0x017f: leal 0xffffff68(%ebp),%eax 0xfd3f23b5: split_memory_phi+0x0185: pushl %eax 0xfd3f23b6: split_memory_phi+0x0186: call ResourceObj [ 0xfcc4af8c, .-0x7a742a ] ebp 0xeddf8e28 [t@14 l@14]: print -fx 0xffffff68+0xeddf8e28 0xffffff68U+0xeddf8e28U = 0xeddf8d90 [t@14 l@14]: x 0xeddf8d90/4lX 0xeddf8d90: 0xfebb4038 0x1220726c 0x00000000 0x00000002 [t@14 l@14]: x 0xfebb4038 0xfebb4038: __1cUGenericGrowableArrayG__vtbl_ : 0xfe5be2b8 0x1220726c is garbage which is a valid value for reversed allocation address 0xeddf8d90 but with wrong allocation type 3(ARENA): [t@14 l@14]: print -f 0x%x ~0x1220726c ~0x1220726c = 0xeddf8d93 It was a pointer to Ideal node StartNode: [t@14 l@14]: x 0x1220726c/4lX 0x1220726c: 0xfebe9a78 0x122072a8 0x12207a40 0x00000002 [t@14 l@14]: x 0xfebe9a78 0xfebe9a78: __1cJStartNodeG__vtbl_ : 0xfe6af498
17-12-2010