[11u] RFR: 8257822: C2 crashes with SIGFPE due to a division that floats above its zero check

Doerr, Martin martin.doerr at sap.com
Fri Mar 19 16:46:08 UTC 2021


Hi,

JDK-8257822 is backported to 11.0.12-oracle. I'd like to backport it for parity and push it together with the follow-up fixes (which apply cleanly on top of this one):
https://bugs.openjdk.java.net/browse/JDK-8258505
https://bugs.openjdk.java.net/browse/JDK-8259227
https://bugs.openjdk.java.net/browse/JDK-8260284
This one doesn't apply cleanly because of an unrelated context difference ("set_early_ctrl" has an additional parameter in 16). So it was trivial to resolve.

Bug:
https://bugs.openjdk.java.net/browse/JDK-8257822

Original change:
https://git.openjdk.java.net/jdk16/commit/ce36aeaa

11u backport:
http://cr.openjdk.java.net/~mdoerr/8257822_C2_SIGFPE_11u/webrev.00/

I couldn't get the new jtreg tests passing without removing the key "randomness" and the flag "-XX:StressSeed". I'd like to remove them from TestDivZeroWithSplitIf.java and TestDivZeroDominatedBy.java with JDK-8259227:
http://cr.openjdk.java.net/~mdoerr/8259227_C2_SIGFPE2_11u/webrev.00/
That one has applied cleanly, but I've removed these parts (also see below). Reason for doing it in that change is that the first 3 patches modify the same tests.

Please review.

Best regards,
Martin


diff -r 2150c70198e1 test/hotspot/jtreg/compiler/loopopts/TestDivZeroDominatedBy.java
--- a/test/hotspot/jtreg/compiler/loopopts/TestDivZeroDominatedBy.java  Thu Jan 07 15:02:45 2021 +0000
+++ b/test/hotspot/jtreg/compiler/loopopts/TestDivZeroDominatedBy.java  Fri Mar 19 17:24:00 2021 +0100
@@ -24,12 +24,12 @@

/*
  * @test
- * @key stress randomness
+ * @key stress
  * @bug 8259227
  * @summary Verify that zero check is executed before division/modulo operation.
  * @requires vm.compiler2.enabled
  * @run main/othervm -Xcomp -XX:-TieredCompilation -XX:CompileOnly=compiler/loopopts/TestDivZeroDominatedBy::test
- *                   -XX:+UnlockDiagnosticVMOptions -XX:+StressGCM -XX:StressSeed=917280111 compiler.loopopts.TestDivZeroDominatedBy
+ *                   -XX:+UnlockDiagnosticVMOptions -XX:+StressGCM compiler.loopopts.TestDivZeroDominatedBy
  * @run main/othervm -Xcomp -XX:-TieredCompilation -XX:CompileOnly=compiler/loopopts/TestDivZeroDominatedBy::test
  *                   -XX:+UnlockDiagnosticVMOptions -XX:+StressGCM compiler.loopopts.TestDivZeroDominatedBy
  */
diff -r 2150c70198e1 test/hotspot/jtreg/compiler/loopopts/TestDivZeroWithSplitIf.java
--- a/test/hotspot/jtreg/compiler/loopopts/TestDivZeroWithSplitIf.java  Thu Jan 07 15:02:45 2021 +0000
+++ b/test/hotspot/jtreg/compiler/loopopts/TestDivZeroWithSplitIf.java  Fri Mar 19 17:24:00 2021 +0100
@@ -24,12 +24,12 @@

/*
  * @test
- * @key stress randomness
+ * @key stress
  * @bug 8257822
  * @summary Verify that zero check is executed before division/modulo operation.
  * @requires vm.compiler2.enabled
  * @run main/othervm -Xcomp -XX:-TieredCompilation -XX:CompileOnly=compiler/loopopts/TestDivZeroWithSplitIf::test
- *                   -XX:+UnlockDiagnosticVMOptions -XX:+StressGCM -XX:StressSeed=873732072 compiler.loopopts.TestDivZeroWithSplitIf
+ *                   -XX:+UnlockDiagnosticVMOptions -XX:+StressGCM compiler.loopopts.TestDivZeroWithSplitIf
  * @run main/othervm -Xcomp -XX:-TieredCompilation -XX:CompileOnly=compiler/loopopts/TestDivZeroWithSplitIf::test
  *                   -XX:+UnlockDiagnosticVMOptions -XX:+StressGCM compiler.loopopts.TestDivZeroWithSplitIf
  */



More information about the jdk-updates-dev mailing list