United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6711117 Assertion in 64bit server vm (flat != TypePtr::BOTTOM,"cannot alias-analyze an untyped ptr")
JDK-6711117 : Assertion in 64bit server vm (flat != TypePtr::BOTTOM,"cannot alias-analyze an untyped ptr")

Details
Type:
Bug
Submit Date:
2008-06-05
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:
hs13,5.0u8
Fixed Versions:
hs16 (b01)

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

Sub Tasks

Description
64bit fastdebug server jvm fails with assertion

# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/BUILD_AREA/jdk7/hotspot/src/share/vm/opto/compile.cpp:1270), pid=17619, tid=1084266816
#  Error: assert(flat != TypePtr::BOTTOM,"cannot alias-analyze an untyped ptr")
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (13.0-b01-fastdebug compiled mode linux-amd64 compressed oops)

in comp mode in case both AggressiveOpts CompressedOops are enabled.

No failure in case AggressiveOpts or CompressedOops are disabled.

The problem started to appear from HS13-b01 (jdk7b27)

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/f2049ae95c3d
                                     
2009-04-08
PUBLIC COMMENTS

Problem:
The assert is triggered by the eliminate AutoBox code which asks
an alias type of "NULL+off" address type.
It is caused by the memory node processing during IGVN before
its control edge which checks the address's nullness is processed.

Solution:
Delay a memory node transformation if its control or address on IGVN
  worklist.
Add the assert into LoadNode::Ideal() method for the eliminate AutoBox
code that the address base type is not NULL pointer.
Also add conditions into LoadNode::Value() method for the AutoBox code 
that the address is AddP node and base type is not NULL pointer.
Use replace_node() instead of subsume_node() during macro nodes
expansion to put users of the old node on IGVN worklist.

Added the regression test.
                                     
2009-04-08



Hardware and Software, Engineered to Work Together