JDK-8073792 : assert((get_length_if_constant(phase) == -1) == !ary_src->size()->is_con()) failed: inconsistent
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P1
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2015-02-24
  • Updated: 2017-07-26
  • Resolved: 2015-02-25
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 b55Fixed
Related Reports
Relates :  
Description
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/arraycopynode.cpp:124
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/opt/jprt/T/P1/093254.rwestrel/s/hotspot/src/share/vm/opto/arraycopynode.cpp:124), pid=14526, tid=3462327152
#  assert((get_length_if_constant(phase) == -1) == !ary_src->size()->is_con()) failed: inconsistent
#
# JRE version: Java(TM) SE Runtime Environment (9.0) (build 1.9.0-internal-fastdebug-20150220093254.rwestrel.6912521-b00)
# Java VM: Java HotSpot(TM) Server VM (1.9.0-internal-fastdebug-20150220093254.rwestrel.6912521-b00 mixed mode linux-x86 )

Comments
verified by nightly testing
26-07-2017

The assert checks that for an array clone, the length input to the ArrayCopyNode is constant iff the size of the array input is constant. The problem is that the length input is the result of a chain of transformations. If the array input becomes of known size after parsing, depending on the order in which nodes are processed by the igvn, the ArrayCopyNode can be processed before the length input has been processed and collapsed to a constant.
25-02-2015

Also, compiler/arraycopy/TestArrayCopyAsLoadsStores.java fails with: java.lang.AssertionError at TestArrayCopyAsLoadsStores.doTest(TestArrayCopyAsLoadsStores.java:395) at TestArrayCopyAsLoadsStores.main(TestArrayCopyAsLoadsStores.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:94) at java.lang.Thread.run(Thread.java:745)
24-02-2015

Regression from JDK-6912521?
24-02-2015