JDK-8146478 : Node limit exceeded with -XX:AllocateInstancePrefetchLines=1073741823
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 8u112,9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2016-01-05
  • Updated: 2016-11-23
  • Resolved: 2016-01-28
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 9
9 b106Fixed
Related Reports
Relates :  
Description
Found during adhoc testing while investigating a nightly failure:

java -XX:AllocateInstancePrefetchLines=1073741823 -version crashes with assert:

# after -XX: or in .hotspotrc:  SuppressErrorAt=\\node.cpp:76
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (C:\\jprt\\T\\P1\\020256.christian\\s\\hotspot\\src\\share\\vm\\opto\\node.cpp:76), pid=66772, tid=56564
#  assert(Compile::current()->live_nodes() < Compile::current()->max_node_limit()) failed: Live Node limit exceeded limit
#
# JRE version: Java(TM) SE Runtime Environment (9.0) (build 9-internal+0-2016-01-06-020256.christian.jake-nightly2)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (9-internal+0-2016-01-06-020256.christian.jake-nightly2, mixed mode, tiered, compressed oops, g1 gc, windows-amd64)
# Core dump will be written. Default location: C:\\local\\aurora\\sandbox\\results\\workDir\\runtime\\CommandLine\\OptionsValidation\\TestOptionsWithRanges\\hs_err_pid66772.mdmp
#
# An error report file with more information is saved as:
# C:\\local\\aurora\\sandbox\\results\\workDir\\runtime\\CommandLine\\OptionsValidation\\TestOptionsWithRanges\\hs_err_pid66772.log
]
Comments
Range checking not backported to pre-JDK 9 releases therefore it's seems to not be necessary to backport this change either. However, it might be beneficial to backport a part of the changes introduced by the fix for this bug. It must be investigated, though, which parts can (and make sense) to be backported.
23-11-2016

I've removed Jigsaw-specific labels from the bug. I also changed the fix version to plain 9.
26-01-2016

I've managed to reproduce the failure with b101 on linux x86_64. So the issue is not specific to jake builds.
26-01-2016

I assume this issue isn't specific to jake builds, can it be duplicate with jdk9/dev or hs-comp builds? Just wondering whether we can drop it from the Jigsaw M3 list.
26-01-2016

RBT: https://jdash.se.oracle.com/rbt/rbt-christian.tornqvist-jake.nightly2-20160120-0200-6767 http://spbeg04.ru.oracle.com:9502/runs/01281/1281252.RBT/1281252.RBT-7/results/workDir/runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.jtr ----------System.err:(37/3002)---------- TEST FAILED: Error processing option AllocateInstancePrefetchLines with valid value '-XX:AllocateInstancePrefetchLines=1073741823'! JVM output reports a fatal error. JVM exited with code 0! stdout content[Java start-up!# To suppress the following error report, specify this argument # after -XX: or in .hotspotrc: SuppressErrorAt=/node.cpp:76 # # A fatal error has been detected by the Java Runtime Environment: # # INVALID (0xe0000000) at pc=0x0000000000000000, pid=2670, tid=2700 # assert(Compile::current()->live_nodes() < Compile::current()->max_node_limit()) failed: Live Node limit exceeded limit # # JRE version: Java(TM) SE Runtime Environment (9.0) (build 9-internal+0-2016-01-20-020038.christian.jake-nightly2) # Java VM: Java HotSpot(TM) 64-Bit Server VM (9-internal+0-2016-01-20-020038.christian.jake-nightly2, mixed mode, tiered, compressed oops, g1 gc, linux-amd64) # Core dump will be written. Default location: Core dumps may be processed with "/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e" (or dumping to /export/home/aurora/sandbox/results/workDir/runtime/CommandLine/OptionsValidation/TestOptionsWithRanges/core.2670) # # An error report file with more information is saved as: # /export/home/aurora/sandbox/results/workDir/runtime/CommandLine/OptionsValidation/TestOptionsWithRanges/hs_err_pid2670.log ] stderr content[] java.lang.RuntimeException: 1 tests failed! (Error processing option AllocateInstancePrefetchLines with valid value '-XX:AllocateInstancePrefetchLines=1073741823'! JVM output reports a fatal error. JVM exited with code 0!) (assert failed: 1 == 0) at jdk.test.lib.Asserts.error(Asserts.java:447) at jdk.test.lib.Asserts.assertTrue(Asserts.java:374) at jdk.test.lib.Asserts.assertEquals(Asserts.java:169) at jdk.test.lib.Asserts.assertEQ(Asserts.java:143) at TestOptionsWithRanges.main(TestOptionsWithRanges.java:167) at sun.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-internal/Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(java.base@9-internal/NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-internal/DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(java.base@9-internal/Method.java:531) at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:110) at java.lang.Thread.run(java.base@9-internal/Thread.java:804) JavaTest Message: Test threw exception: java.lang.RuntimeException: 1 tests failed! (Error processing option AllocateInstancePrefetchLines with valid value '-XX:AllocateInstancePrefetchLines=1073741823'! JVM output reports a fatal error. JVM exited with code 0!) (assert failed: 1 == 0) JavaTest Message: shutting down test STATUS:Failed.`main' threw exception: java.lang.RuntimeException: 1 tests failed! (Error processing option AllocateInstancePrefetchLines with valid value '-XX:AllocateInstancePrefetchLines=1073741823'! JVM output reports a fatal error. JVM exited with code 0!) (assert failed: 1 == 0)
20-01-2016

It is pure C2 problem. We should limit range of values for AllocateInstancePrefetchLines flag. And may be add check_node_count() in prefetch_allocation() based on 'lines' value.
20-01-2016

What clues indicate this is a core-libs bug?
06-01-2016