JDK-6457854 : C2 assert(lo->lo() == min_jint,"initial range must exhaust Type::INT")
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 6
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_9
  • CPU: sparc
  • Submitted: 2006-08-08
  • Updated: 2012-02-01
  • Resolved: 2006-11-14
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
6u2Fixed 7Fixed hs10Fixed
Description
Due to testbase update we got this new failure in C2 VM (both 32 and 64-bits VM):

foundation% hs_err --jvm=./libjvm.so hs_err_pid12619.log
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  Internal Error (/net/prt-solx86-q1-4/PrtBuildDir/workspace/src/share/vm/opto/parse2.cpp, 448), pid=12619, tid=10
#
# Java VM: Java HotSpot(TM) Server VM (20060803141100.kvn.6454444-debug compiled mode)
#
# Error: assert(lo->lo() == min_jint,"initial range must exhaust Type::INT")
# 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 (0x08179000):  JavaThread "CompilerThread1" daemon [_thread_in_native, id=10]

Stack: [0xb6c02000,0xb6c42000),  sp=0xb6c3f1c8,  free space=244k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xaf9c8b] void VMError::report_and_die() + 0x517
V  [libjvm.so+0x319f3f] void report_assertion_failure(const char*,int,const char*) + 0x5f
V  [libjvm.so+0x8c80bd] void Parse::jump_switch_ranges(Node*,SwitchRange*,SwitchRange*,int) + 0xb65
V  [libjvm.so+0x8c66ad] void Parse::do_tableswitch() + 0x2e1
V  [libjvm.so+0x8cd44c] void Parse::do_one_bytecode() + 0x2c0
V  [libjvm.so+0x8be36d] void Parse::do_one_block() + 0x311
V  [libjvm.so+0x8b97a9] void Parse::visit_blocks() + 0xb1
V  [libjvm.so+0x8b94b3] void Parse::do_all_blocks() + 0x2f
V  [libjvm.so+0x8b8f23] Parse::Parse(JVMState*,ciMethod*,float) + 0x8c7
V  [libjvm.so+0x1a439f] JVMState*ParseGenerator::generate(JVMState*) + 0xd3
V  [libjvm.so+0x2ab1c0] Compile::Compile(ciEnv*,C2Compiler*,ciMethod*,int,bool)+ 0x8e0

Comments
SUGGESTED FIX Use (lo_index != min_jint). Webrev: http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2006/20060816105856.kvn.6457854/workspace/webrevs/webrev-2006.08.16/index.html
16-08-2006

EVALUATION The problem exists from day 1: The default destination for tableswitch is not generated if lo_index == min_jint+1: if (lo_index-1 != min_jint) { ranges[++rp].setRange(min_jint, lo_index-1, default_dest, -1); }
08-08-2006