JDK-8004319 : test/gc/7168848/HumongousAlloc.java fails after 7172640
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2012-12-03
  • Updated: 2013-09-04
  • Resolved: 2012-12-04
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 7 JDK 8 Other
7u40Fixed 8Fixed hs24Fixed
Related Reports
Relates :  
Description
cthaling@sc14ia01:~/hotspot/test/gc/7168848$ java -XX:+PrintCompilation -XX:CompileOnly=java.lang.ref.Reference::get -server -Xcomp -XX:-TieredCompilation -XX:+UseG1GC HumongousAlloc
Will allocate objects of size: 786432 bytes and sleep for 1000 ms after every 40th allocation.
    439    1    b        java.lang.ref.Reference::get (5 bytes)
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/callnode.hpp:252
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/home/cthaling/hotspot/src/share/vm/opto/callnode.hpp:252), pid=25052, tid=62
#  assert(has_method()) failed: 
#
# JRE version: Java(TM) SE Runtime Environment (8.0-b63) (build 1.8.0-ea-b63)
# Java VM: Java HotSpot(TM) Server VM (25.0-b08-internal-jvmg compiled mode solaris-x86 )
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/cthaling/hotspot/test/gc/7168848/hs_err_pid25052.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#
Current thread is 62
Dumping core ...
Abort

Comments
The fix is to detect root compiles in LibraryCallKit::LibraryCallKit and set _reexecute_sp to sp().
03-12-2012

The problem are root compiles which need to be intrinsified. Currently there is only one method that has this property (see Compile::Compile): if (method()->intrinsic_id() == vmIntrinsics::_Reference_get && UseG1GC) { // With java.lang.ref.reference.get() we must go through the // intrinsic when G1 is enabled - even when get() is the root // method of the compile - so that, if necessary, the value in // the referent field of the reference object gets recorded by // the pre-barrier code.
03-12-2012