United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-7000491 assert(false) failed: should be optimized out in SharedRuntime::g1_wb_pre
JDK-7000491 : assert(false) failed: should be optimized out in SharedRuntime::g1_wb_pre

Details
Type:
Bug
Submit Date:
2010-11-16
Status:
Closed
Updated Date:
2011-03-08
Project Name:
JDK
Resolved Date:
2011-03-08
Component:
hotspot
OS:
generic
Sub-Component:
compiler
CPU:
generic
Priority:
P3
Resolution:
Fixed
Affected Versions:
hs19
Fixed Versions:
hs20 (b04)

Related Reports
Backport:
Backport:

Sub Tasks

Description
Application crashes in compiled code (HS 19 b09, fastdebug, -XX:-UseCompressedOops -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -Xcomp -XX:CompileThreshold=1 -XX:+UseCodeCacheFlushing -Xmx2097152K):

# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/BUILD_AREA/jdk6_23/hotspot/src/share/vm/runtime/sharedRuntime.cpp:119), pid=7545, tid=56
#  assert(false) failed: should be optimized out

Current thread (0x000000010b791000):  JavaThread "SpecJbb2005StressModule" [_thread_in_Java, id=56, stack(0xffffffff6bc00000,0xffffffff6bd00000)]

Stack: [0xffffffff6bc00000,0xffffffff6bd00000],  sp=0xffffffff6bcfd6f0,  free space=1013k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xfc4848];;  void VMError::report_and_die()+0x780
V  [libjvm.so+0x548bc0];;  void report_vm_error(const char*,int,const char*,const char*)+0x78
V  [libjvm.so+0xdb36a0];;  void SharedRuntime::g1_wb_pre(oopDesc*,JavaThread*)+0x108
J  spec.jbb.validity.PepTest.testDiv()Ljava/lang/String;
J  spec.jbb.validity.PepTest.instanceMain()V
J  spec.jbb.validity.Check.doCheck()Z
J  spec.jbb.JBBmain.main([Ljava/lang/String;)V
v  ~StubRoutines::call_stub
V  [libjvm.so+0x79f1dc];;  void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x75c
V  [libjvm.so+0x79ea60];;  void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x78
V  [libjvm.so+0xd67e70];;  oop Reflection::invoke(instanceKlassHandle,methodHandle,Handle,bool,objArrayHandle,BasicType,objArrayHandle,bool,Thread*)+0x32f0
V  [libjvm.so+0xd75e44];;  oop Reflection::invoke_method(oop,Handle,objArrayHandle,Thread*)+0x9c4
V  [libjvm.so+0x8eca98];;  JVM_InvokeMethod+0x430
C  [libjava.so+0x1a9b4];;  Java_sun_reflect_NativeMethodAccessorImpl_invoke0+0x18
J  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
J  sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
J  sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
J  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
J  jrockit.qa.stress.kitchensink.process.stress.modules.SpecJbb2005StressModule.execute()V
j  jrockit.qa.stress.kitchensink.process.stress.modules.StressModule.run()V+128
v  ~StubRoutines::call_stub
V  [libjvm.so+0x79f1dc];;  void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x75c
V  [libjvm.so+0x79d7e4];;  void JavaCalls::call_virtual(JavaValue*,KlassHandle,symbolHandle,symbolHandle,JavaCallArguments*,Thread*)+0x4bc
V  [libjvm.so+0x79d95c];;  void JavaCalls::call_virtual(JavaValue*,Handle,KlassHandle,symbolHandle,symbolHandle,Thread*)+0xd4
V  [libjvm.so+0x8c4a34];;  void thread_entry(JavaThread*,Thread*)+0x1c4
V  [libjvm.so+0xee89d0];;  void JavaThread::thread_main_inner()+0x168
V  [libjvm.so+0xee8848];;  void JavaThread::run()+0x360
V  [libjvm.so+0xc843cc];;  java_start+0x194

                                    

Comments
EVALUATION

Wrong value type is used for NULL store when clearing the detail message of the preallocated exception object.
                                     
2010-11-18
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/f264f4c42799
                                     
2010-11-18
PUBLIC COMMENTS

Wrong value type is used for NULL store when clearing
the detail message of the preallocated exception object
for inlined throw.
The passed value type was the exception object oop which
is constant and as result the load of original value in
g1 pre barrier code was replaced with this constant oop.
As result the check of original value for NULL was
incorrectly eliminated.

Use String type as value type for the detail message zeroing.
Verified with generated code for spec.jbb.validity.PepTest::testDiv
                                     
2010-11-18
EVALUATION

http://hg.openjdk.java.net/jdk7/build/hotspot/rev/f264f4c42799
                                     
2010-12-25



Hardware and Software, Engineered to Work Together