United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6695810 null oop passed to encode_heap_oop_not_null
JDK-6695810 : null oop passed to encode_heap_oop_not_null

Details
Type:
Bug
Submit Date:
2008-04-29
Status:
Closed
Updated Date:
2012-02-01
Project Name:
JDK
Resolved Date:
2011-03-08
Component:
hotspot
OS:
generic,solaris_10
Sub-Component:
compiler
CPU:
x86,generic
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs13
Fixed Versions:
hs13 (b02)

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

Sub Tasks

Description
Failed tests:

nsk/stress/jck60/jck60026
nsk/stress/jck12a/jck12a017

gamma -cp /net/sqenfs-1.sfbay/export1/comp/vm/testbase/jck/6a/dist/JCK-runtime-6a/classes:/java/sqe/comp/vm/testbase/sqe/vm/6/build/latest/vm/bin/classes -Xcomp -XX:+DoEscapeAnalysis -XX:+UseCompressedOops -Xverify:all nsk.stress.share.StressTestRunner -testList /java/sqe/comp/vm/testbase/sqe/vm/6/build/latest/vm/src/nsk/stress/jck60/jck60026/tests

=============== DEBUG MESSAGE: null oop passed to encode_heap_oop_not_null ================
# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
#  SIGSEGV (0xb) at pc=0xfffffd7ffa3f6e25, pid=14815, tid=471 
# 
# Java VM: OpenJDK 64-Bit Server VM (12.0-b02-2008-04-17-203457.kvn.6689060-fastdebug compiled mode solaris-amd64 compressed oops) 
# Problematic frame: 
# J  javax.swing.text.JTextComponent.updateInputMap(Ljavax/swing/text/Keymap;Ljavax/swing/text/Keymap;)V 
#

                                    

Comments
EVALUATION

The problem is EncodeP node's type nullness.

After CastPP is removed by PhaseCCP EncodeP was moved above the null check
(EncodeP and DecodeN don't have control edge) so the NotNULL type
is not valid any more.
                                     
2008-04-30
SUGGESTED FIX

Set control edge for EncodeP and DecodeN nodes using MemNode::Ideal_DU_PostCCP().

Also fix next problems:
- replace Type::is_narrow() with more precise Type::is_ptr_to_narrowoop()
  defined during TypeOopPtr construction,
- use subclass check instead of alias types check in CallNode::may_modify(), 
- call PhiNode::split_out_instance() also for Phi nodes with
  non-instance OopPtr type which matches the instance type,
- stop compilation instead of VM exit when there is no space 
  for scratch buffer in CodeCache,
- don't flatten instance type in alias types,
- skip the split through phi in LoadNode::Ideal() if the Region node
  dominates load's address,
- an allocation is not scalar replaceable if the resuilt is stored
  into unknown array's element,
- try both Region's input paths in Node::dominates(),
- add missing checks for ConN node.

Added the test case. Also added the test case for 6689060.
                                     
2008-05-21



Hardware and Software, Engineered to Work Together