United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 6792161 assert("No dead instructions after post-alloc")
6792161 : assert("No dead instructions after post-alloc")

Details
Type:
Bug
Submit Date:
2009-01-09
Status:
Resolved
Updated Date:
2010-04-03
Project Name:
JDK
Resolved Date:
2010-02-09
Component:
hotspot
OS:
solaris_9,solaris_10
Sub-Component:
compiler
CPU:
sparc
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs15,hs17
Fixed Versions:
hs17

Related Reports
Backport:
Backport:
Duplicate:
Relates:

Sub Tasks

Description
Note:  CompileThreshold=2

intelsdv20% /java/re/jdk/7/promoted/all/b42/binaries/solaris-i586/fastdebug/bin/java -cp /net/sqenfs-1.sfbay/export1/comp/vm/testbase/jck/6b/dist/JCK-runtime-6b/classes:/java/sqe/comp/vm/testbase/sqe/vm/6/build/latest/vm/bin/classes -XX:CompileThreshold=2 -Xverify:all nsk.stress.share.StressTestRunner -testList /java/sqe/comp/vm/testbase/sqe/vm/6/build/latest/vm/src/nsk/stress/jck60/jck60022/tests -stress:indulgent
VM option 'CompileThreshold=2'
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/chaitin.cpp:1354
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/BUILD_AREA/jdk7/hotspot/src/share/vm/opto/chaitin.cpp:1354), pid=22140, tid=16[thread 15 also had an error]
#  Error: assert(n->outcnt() != 0 || C->top() == n || n->is_Proj(),"No dead instructions after post-alloc")

#
# Java VM: Java HotSpot(TM) Server VM (14.0-b09-fastdebug mixed mode solaris-x86 )
# An error report file with more information is saved as:
# /export/kvn/build/6790209/hs_err_pid22140.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#
Current thread is 16
Dumping core ...
Abort

                                    

Comments
EVALUATION

ChangeSet=http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/0e14bd797dad,ChangeRequest=6792161
                                     
2010-01-29
EVALUATION

In this failure a MemBarNode is the only user of a node through it's
Precedent input and the liveness calculation in ifg.cpp doesn't
consider precedent edges in the liveness calculation.  Because of this
the node appears dead and we end up deleting it during post allocation
copy removal.  It's possible this node is a chain of phis and loads
and the dead code elimination can't handle that complex of a dead
structure so it ends up hitting asserts.  The fix is to modify ifg.cpp
to keep the precedent input alive if the membar node is the only user.
It's not possible to delete the membar node completely since we have
to preserve it's barrier semantics.  Tested with failing test case.
                                     
2010-01-29



Hardware and Software, Engineered to Work Together