JDK-7003130 : assert(iterations
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs20
  • Priority: P4
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2010-11-29
  • Updated: 2011-04-23
  • Resolved: 2011-04-23
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.
JDK 6 JDK 7 Other
6u25Fixed 7Fixed hs20Fixed
Description
Application crashes after 4 hours (solaris-sparcv9, fastdebug, -d64 -server -XX:-UseCompressedOops -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+AggressiveOpts -XX:CompileThreshold=100 -XX:+UseCodeCacheFlushing):

# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/export/HUDSON/workspace/jdk7-2-build-solaris-sparcv9-product/jdk7/hotspot/src/share/vm/opto/escape.cpp:1655), pid=9422, tid=30
#  assert(iterations<CG_BUILD_ITER_LIMIT) failed: infinite EA connection graph build with 8941 nodes and worklist size 464
#
# JRE version: 7.0-b119
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.0-b03-fastdebug mixed mode solaris-sparc )

Current thread (0x000000010a400800):  JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=30, stack(0xfffffffeebe00000,0xfffffffeebf00000)]

Stack: [0xfffffffeebe00000,0xfffffffeebf00000],  sp=0xfffffffeebef7850,  free space=990k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x12c366c];;  void VMError::report_and_die()+0x734
V  [libjvm.so+0x71b1e8];;  void report_vm_error(const char*,int,const char*,const char*)+0x78
V  [libjvm.so+0x7b531c];;  bool ConnectionGraph::compute_escape()+0x954
V  [libjvm.so+0x7b4960];;  void ConnectionGraph::do_analysis(Compile*,PhaseIterGVN*)+0x5c
V  [libjvm.so+0x65525c];;  void Compile::Optimize()+0x1b4
V  [libjvm.so+0x650954];;  Compile::Compile(ciEnv*,C2Compiler*,ciMethod*,int,bool,bool)+0xe9c
V  [libjvm.so+0x4c14b4];;  void C2Compiler::compile_method(ciEnv*,ciMethod*,int)+0xb4
V  [libjvm.so+0x668574];;  void CompileBroker::invoke_compiler_on_method(CompileTask*)+0x1d4c
V  [libjvm.so+0x6661ec];;  void CompileBroker::compiler_thread_loop()+0xb24
V  [libjvm.so+0x11f1f5c];;  void JavaThread::thread_main_inner()+0x1a4
V  [libjvm.so+0x11f1d98];;  void JavaThread::run()+0x248
V  [libjvm.so+0xf380d8];;  java_start+0x300

Current CompileTask:
C2:12264531 12135      com.sun.tools.javac.comp.TransTypes.addBridge(Lcom/sun/tools/javac/util/JCDiagnostic$DiagnosticPosition;Lcom/sun/tools/javac/code/Symbol$MethodSymbol;Lcom/sun/tools/javac/code/Symbol$MethodSymbol;Lcom/sun/tools/javac/code/Symbol$ClassSymbol;ZLcom/sun/tools/javac/util/ListBuffer;)V (330 bytes)

Comments
PUBLIC COMMENTS It seems, 10 for CG_BUILD_ITER_LIMIT is small. I rerun current VM with jvm2008 and observed 8 iterations. So a case with 10 may be not as rare as I thought. I tried to collect statistic on the correlation of this number with total number of nodes and number of particular idead nodes (addp,load,store,call) but I did not find any correlation. It seems, it depends more on the order of nodes on worklist than on number of nodes. Bumping CG_BUILD_ITER_LIMIT to 20. Note: in product VM we recompile a method without EA so it is not a critical problem.
22-12-2010

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/a21ff35351ec
22-12-2010