JDK-8038785 : Crash in C2 compiler at Node::rematerialize - REVERTED
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 7u51
  • Priority: P3
  • Status: Closed
  • Resolution: Won't Fix
  • Submitted: 2014-03-31
  • Updated: 2014-10-15
  • Resolved: 2014-05-05
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.
6u81Resolved 7u76Fixed
Related Reports
Relates :  
Relates :  
The crash is reproducible in JDK6 and JDK7. In JDK8 and JDK9 the crash is not reproducible if TieredCompilation flag is set (src/cpu/x86/vm/c2_globals_x86.hpp).

Stacktrace for JDK9 attached.

Fix has been reverted back by # JDK-8040664. New fix was pushed with JDK-8039050

Note, JDK-8040664, the change to revert this fix, is now critically requested. As soon as that is approved and pushed, we can remove the critical watch on this bug.

Since we saw issues here, removing critical request. Still keeping critical watch. If we could get this fix out in July, it would be good. Apart from the customer, several Java Incidents have been filed with similar issues, so it seems several users are running into this: JI-7187856 JVM crash at Node::rematerialize() JI-9006526 Java app calling JasperReports 5.0.1 crashes in Eclipse 3.7.2 JI-9005261 JDK7 (inc7u21,7u25) crashes during report export via Jasperreports JI-9004125 A fatal error has been detected by the Java Runtime Environment:

Crash reproducer java -d64 -XX:-TieredCompilation -cp lib/runtime/*:build/classes/ org.openbravo.JasperC2CompilerCrash

Hot workaround fix for JDK7 and JDK6 will be committed as a temporary solution, Proper fix for JDK8 and JDK9 will be done under the bug JDK-8039050 The temporary fix will introduce a performance regression because loops in next cases will not be converted to Counted and as result will not be unrolled, range check eliminated and some some checks will not be moved from a loop. In other words no loop optimizations will be done for next cases: if (a) { ... } for (; i<l;i++) {} and when head of the loop (back branch target) is bci 0.