JDK-8211233 : MemBarNode::trailing_membar() and MemBarNode::leading_membar() need to handle dying subgraphs better
Type:Bug
Component:hotspot
Sub-Component:compiler
Affected Version:11,12
Priority:P3
Status:Resolved
Resolution:Fixed
Submitted:2018-09-27
Updated:2021-02-15
Resolved:2018-10-11
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.
I hit a bug where MemBarNode::leading_membar() doesn't return the right result because a dying part of the graph between a trailing and a leading membars is not properly handled.
Comments
Fix Request 11u
What: This is a follow-up fix for JDK-8209420. Backport requires JDK-8209420 to be applied first. Original patch applies to jdk11u cleanly
Why: Review thread: https://mail.openjdk.java.net/pipermail/aarch64-port-dev/2019-August/007870.html
As discussed in the thread, we are witnessing real-world volatile access inconsistency bugs on
our Kunpeng 64/128 core aarch64 server platform. The same issue is there in jdk11u in theory.
As pointed out by adinn, this patch would be worth backporting /even without/ the problems we
have encountered because it significantly reduces complexity.
Testing: Run tier1 test with 11u aarch64 release build, no new failure found
Passed Jcstress test with 11u aarch64 release build
Risk: The original patch was committed to jdk13 about one year ago, risk should be low