United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6422099 C2 assert("live value must not be garbage")
JDK-6422099 : C2 assert("live value must not be garbage")

Details
Type:
Bug
Submit Date:
2006-05-04
Status:
Resolved
Updated Date:
2010-12-13
Project Name:
JDK
Resolved Date:
2006-05-25
Component:
hotspot
OS:
solaris_9,solaris_10
Sub-Component:
compiler
CPU:
sparc
Priority:
P2
Resolution:
Fixed
Affected Versions:
5.0u18,5.0u19,6
Fixed Versions:

Related Reports
Backport:
Backport:
Backport:
Duplicate:
Duplicate:
Relates:

Sub Tasks

Description
I think, it happens due to changing of an Ideal graph since
the different changes in 1.5 and 1.6 caused the assert.
I was able to reproduce it on both 64bits VM: amd64 and sparcv9

jano% setenv TEST_JAVA /java/re/jdk/1.6.0/promoted/all/b82/binaries/solaris-sparcv9/fastdebug
jano% setenv LD_LIBRARY_PATH /net/sqesvr-nfs.sfbay/global/nfs/vm/users/viswadeep/1.5.0/VM/TIGER_TESTBASE/bin/lib/sparcv9/runtime/ParallelClassLoading/shared
jano% $TEST_JAVA/bin/java -d64 -server -Xverify:all -Xcomp -Xbatch -XX:+UnlockDiagnosticVMOptions -d64 -Xverify:all -cp /net/sqesvr-nfs.sfbay/global/nfs/vm/users/viswadeep/1.5.0/VM/TIGER_TESTBASE/bin/classes -agentlib:redefineClasses \
runtime.ParallelClassLoading.shared.ReflectionLoadingController -ITERATIONS 100 -DEBUG true -waitTimeInMin 2 -THREADS_COUNT 5 -classDir \
/net/sqesvr-nfs.sfbay/global/nfs/vm/users/viswadeep/1.5.0/VM/TIGER_TESTBASE/bin/classes/runtime/ParallelClassLoading/shared/hierarchies/static-load/static-init/anonymous/complex -class \
custom.R% -provoke reflect -provoke newInstance -regexForFreeingLock custom.A.\* -loadedClasses custom.D1,custom.D2,custom.D3,custom.D4,custom.D5,custom.D6,custom.D7,custom.D8,custom.D9,custom.D10

In 1.6 (Mustang) the assert started after the next fix (#6359906)

#  Internal Error (/net/prt-solamd64-q1-4/PrtBuildDir/workspace/src/share/vm/opto/parse1.cpp, 1555), pid=18647, tid=11
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20051214080340.nips.divmod-debug compiled mode)
#
# Error: assert(n != top() || r->in(pnum) == top(),"live value must not be garbage")

In 1.5.0_07 (Tiger update7) it started after (#6322757)

#  Internal Error (/net/prt-sparc-q2-9/tmp/PrtBuildDir/workspace/src/share/vm/opto/parse1.cpp, 1501 [ Patched ]), pid=12448, tid=26
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20051216122827.chrisphi.hotspot-debug compiled mode)
#
# Error: assert(n != top() || r->in(pnum) == top(),"live value must not be garbage")

                                    

Comments
SUGGESTED FIX

Set the bottom type to the previous local if it contains first half of
a double or long value when it's second half is being overwritten.

Webrev:                 http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2006/20060509104409.kvn.6422099/workspace/webrevs/webrev-2006.05.09/index.html
                                     
2006-05-09
EVALUATION

ciTypeFlow does not overwrite a type of first slot of a long/double local
when there was a store into second slot. It leads to the assert in a merge
point since Parser thinks the long/double local still alive on all
merged paths.
                                     
2006-05-09



Hardware and Software, Engineered to Work Together