United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 7110832 ctw/.../org_apache_avalon_composition_util_StringHelper crashes the VM
7110832 : ctw/.../org_apache_avalon_composition_util_StringHelper crashes the VM

Details
Type:
Bug
Submit Date:
2011-11-11
Status:
Closed
Updated Date:
2012-03-29
Project Name:
JDK
Resolved Date:
2012-03-29
Component:
hotspot
OS:
generic
Sub-Component:
compiler
CPU:
generic
Priority:
P3
Resolution:
Fixed
Affected Versions:
8
Fixed Versions:
hs23

Related Reports
Backport:
Backport:
Duplicate:

Sub Tasks

Description
ctw/maven2/avalon-composition/avalon-composition-impl/1_2_5/avalon-composition-impl-1_2_5_jar/org_apache_avalon_composition_util_StringHelper failed crashing the VM during HS23b05 JDK8b13 PIT. Not reproducible with -Xint. It's a compiler issue. However, reproducible both with -client and -server. Initially assigning C1 subcategory for this CR.

To reproduce,

1. ssh -luadmin to sc14160083
2. /export/local/common/jdk/baseline/solaris-amd64/bin/java -Xcomp -server -d64 -Xverify:all -XX:+CompileTheWorld -XX:CompileTheWorldStartAt=42 -XX:CompileTheWorldStopAt=43 -XX:LogFile=hotspot_42.log -XX:MaxPermSize=384M -Xmx512M -Xbootclasspath/p:/net/sqenfs-1.us.oracle.com/export1/comp/vm/testbase/ctw/full/maven2/avalon-composition/avalon-composition-impl/1.2.5/avalon-composition-impl-1.2.5.jar

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/lambda/lambda/hotspot/rev/40c2484c09e1
                                     
2012-03-22
EVALUATION

Distance is too large for one short branch in string_indexofC8(). Note, it does not fail always because different REX prefixes are generated for different input registers.

I added verification code in debug VM by reducing allowed distance (by 32 bytes) for short branches. It can be used in a large hand written assembler code.
                                     
2011-12-28
EVALUATION

http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/40c2484c09e1
                                     
2011-12-24
EVALUATION

Distance is too large for next conditional branch in MacroAssembler::string_indexofC8()

    jccb(Assembler::noOverflow, RELOAD_SUBSTR); // OF == 0


V  [libjvm.so+0xe88827]  void report_vm_error(const char*,int,const char*,const char*)+0x55f
V  [libjvm.so+0x6e79aa]  void Assembler::jccb(Assembler::Condition,Label&)+0x39e
V  [libjvm.so+0x7ddb0d]  void MacroAssembler::string_indexofC8(RegisterImpl*,RegisterImpl*,RegisterImpl*,RegisterImpl*,int,RegisterImpl*,XMMRegisterImpl*,RegisterImpl*)+0x1241
V  [libjvm.so+0x54b875]  void string_indexof_conNode::emit(CodeBuffer&,PhaseRegAlloc*)const+0x2dd
V  [libjvm.so+0xcdac9a]  unsigned Compile::scratch_emit_size(const Node*)+0x452
V  [libjvm.so+0x21877cf]  void Compile::shorten_branches(unsigned*,int&,int&,int&)+0x547
V  [libjvm.so+0x218c164]  CodeBuffer*Compile::init_buffer(unsigned*)+0x340
V  [libjvm.so+0x2186256]  void Compile::Output()+0xa36
V  [libjvm.so+0xce68ea]  void Compile::Code_Gen()+0x6ca
V  [libjvm.so+0xcdc4aa]  Compile::Compile(ciEnv*,C2Compiler*,ciMethod*,int,bool,bool)+0x1576
                                     
2011-12-22



Hardware and Software, Engineered to Work Together