United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-7110489 C1: 64-bit tiered with ForceUnreachable: assert(reachable(src)) failed: Address should be reachable
JDK-7110489 : C1: 64-bit tiered with ForceUnreachable: assert(reachable(src)) failed: Address should be reachable

Details
Type:
Bug
Submit Date:
2011-11-10
Status:
Closed
Updated Date:
2012-03-22
Project Name:
JDK
Resolved Date:
2012-01-20
Component:
hotspot
OS:
generic
Sub-Component:
compiler
CPU:
generic
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs23
Fixed Versions:
hs23 (b08)

Related Reports
Backport:
Backport:

Sub Tasks

Description
$ java -showversion -d64 -XX:+TieredCompilation -Xbatch -XX:+ForceUnreachable 
VM option '+TieredCompilation'
VM option '+ForceUnreachable'
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/assembler_x86.cpp:6988
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/home/ct232829/hsx/hotspot-comp/hotspot/src/cpu/x86/vm/assembler_x86.cpp:6988), pid=22384, tid=29
#  assert(reachable(src)) failed: Address should be reachable
#
# JRE version: 8.0-b11
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.0-b03-internal-fastdebug mixed mode solaris-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/ct232829/hsx/hotspot-comp/hotspot/make/hs_err_pid22384.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#
Current thread is 29
Dumping core ...
Abort


Stack: [0xfffffd7dee12b000,0xfffffd7dee22b000],  sp=0xfffffd7dee2294f0,  free space=1017k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x1449f64]  void VMError::report(outputStream*)+0x1304
V  [libjvm.so+0x144b720]  void VMError::report_and_die()+0x9b0
V  [libjvm.so+0xc971fa]  void report_vm_error(const char*,int,const char*,const char*)+0x9a
V  [libjvm.so+0x9889c3]  void MacroAssembler::testl(RegisterImpl*,AddressLiteral)+0xa3
V  [libjvm.so+0xa5925c]  void LIR_Assembler::return_op(LIR_OprDesc*)+0x39c
V  [libjvm.so+0xa52c16]  void LIR_Assembler::emit_op1(LIR_Op1*)+0x2c6
V  [libjvm.so+0xa46bf2]  void LIR_Op1::emit_code(LIR_Assembler*)+0x22
V  [libjvm.so+0xa51bb5]  void LIR_Assembler::emit_lir_list(LIR_List*)+0x205
V  [libjvm.so+0xa51952]  void LIR_Assembler::emit_block(BlockBegin*)+0x2a2
V  [libjvm.so+0xa5164b]  void LIR_Assembler::emit_code(BlockList*)+0x7b
V  [libjvm.so+0x9facac]  int Compilation::emit_code_body()+0x1cc
V  [libjvm.so+0x9fb124]  int Compilation::compile_java_method()+0x344
V  [libjvm.so+0x9fb546]  void Compilation::compile_method()+0x126
V  [libjvm.so+0x9fbe48]  Compilation::Compilation(AbstractCompiler*,ciEnv*,ciMethod*,int,BufferBlob*)+0x348
V  [libjvm.so+0x9ff50a]  void Compiler::compile_method(ciEnv*,ciMethod*,int)+0xfa
V  [libjvm.so+0xc14c39]  void CompileBroker::invoke_compiler_on_method(CompileTask*)+0x649
V  [libjvm.so+0xc13ef1]  void CompileBroker::compiler_thread_loop()+0x4c1
V  [libjvm.so+0x13cfc58]  void compiler_thread_entry(JavaThread*,Thread*)+0x78
V  [libjvm.so+0x13c9a73]  void JavaThread::thread_main_inner()+0x1a3
V  [libjvm.so+0x13c98c1]  void JavaThread::run()+0x271
V  [libjvm.so+0x11f76d8]  java_start+0x258
C  [libc.so.1+0xd704b]  _thr_setup+0x5b
C  [libc.so.1+0xd7280]  ht_pause+0x10

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/59bc0d4d9ea3
                                     
2011-11-19
EVALUATION

7110489: C1: 64-bit tiered with ForceUnreachable: assert(reachable(src)) failed: Address should be reachable
Reviewed-by: kvn, iveresov, twisti

The ForceUnreachable flag hadn't been tested broadly on x64 and in
this particular failure, there's a mismatch between
is_polling_page_far and reachable which causes the assertion failure.
I also lowered the buffer limit of x64 too much which resulted in
failures so I've raised the limit back up to 120000 for debug x64.
The method handle adapters lazily generated so only actual method
handles tests verify that the buffer was properly generated.  I
modified the JVM to force the generation during bootstrap and ran it
through JPRT with +ForceUnreachable.  This exposed a separate problem
in the arraycopy stubs on windows where the rscratch1 (r10) is being
used to preseve rsi and the increment of the copy counters can blow it
away if the counter isn't reachable.  I fixed this be reordering the
counter updates to be after the restore of rsi.
                                     
2011-11-22
EVALUATION

http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/59bc0d4d9ea3
                                     
2011-12-15
EVALUATION

http://hg.openjdk.java.net/lambda/lambda/hotspot/rev/59bc0d4d9ea3
                                     
2012-03-22



Hardware and Software, Engineered to Work Together