JDK-8166742 : SIGFPE in C2 Loop IV elimination
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 8u102,9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • CPU: x86
  • Submitted: 2016-09-26
  • Updated: 2018-02-15
  • Resolved: 2016-09-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 8 JDK 9
8u162Fixed 9 b143Fixed
Description
The replace_parallel_iv() function crashes in a specific edge case.  Not sure if the crash happens on platforms other than x86, but the result of a division operation can not be represented.

Small test case below, run with -XX:-TieredCompilation -XX:-BackgroundCompilation for reproduction.

Contribution forthcoming shortly with proposed fix. 

public class TestImpossibleIV {

  static private void testMethod() {
    int sum = 0;
    // A unit count-down loop which has an induction variable with
    // MIN_VALUE stride.
    for (int i = 100000; i >= 0; i--) {
      sum += Integer.MIN_VALUE;
    }
  }

  public static void main(String[] args) {
    testMethod();
  }
}