-
Notifications
You must be signed in to change notification settings - Fork 76
8259227: C2 crashes with SIGFPE due to a division that floats above its zero check #89
Conversation
|
👋 Welcome back chagedorn! A progress list of the required criteria for merging this PR into |
|
@chhagedorn The following label will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command. |
Webrevs
|
vnkozlov
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good.
|
@chhagedorn This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 13 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
|
Thanks for your review Vladimir! |
TobiHartmann
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Otherwise looks good to me.
| * @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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just wondering if the StressSeed should really be hardcoded? If things change in the VM, this seed might not longer reproduce the issue. Maybe add another @run with no fixed seed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good idea. I also updated the test from JDK-8257822 with such an additional run.
Add additional runs without fixed seed
TobiHartmann
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for updating, looks good!
|
Thanks Tobias for your review! |
|
/integrate |
|
@chhagedorn Since your change was applied there have been 14 commits pushed to the
Your commit was automatically rebased without conflicts. Pushed as commit c1fb521. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
This bug is very similar to JDK-8257822. In this testcase, a
Divnode has no longer its zero check as direct control input and is later moved before the zero check byIfNode::dominated_by()which updates all data nodes to a dominatingIf(in JDK-8257822 it was done byPhaseIdealLoop::dominated_by()) .I suggest to use the same fix for
IfNode::dominated_by()as forPhaseIdealLoop::dominated_by()in JDK-8257822 to only move data nodes to the dominatingIfif it is not aDivorModnode that could have a zero divisor (i.e. a zero check).Thanks,
Christian
Progress
Issue
Reviewers
Download
$ git fetch https://git.openjdk.java.net/jdk16 pull/89/head:pull/89$ git checkout pull/89