JDK-6695810 : null oop passed to encode_heap_oop_not_null
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs13
  • Priority: P4
  • Status: Closed
  • Resolution: Fixed
  • OS: generic,solaris_10
  • CPU: generic,x86
  • Submitted: 2008-04-29
  • Updated: 2012-02-01
  • Resolved: 2011-03-08
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u14Fixed 7Fixed hs13Fixed
Related Reports
Duplicate :  
Relates :  
Relates :  
Failed tests:


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 

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.

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.