JDK-8006971 : More missing barriers in taskqueues for RMO architectures
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs25
  • Priority: P4
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: arm,ppc,itanium
  • Submitted: 2013-01-26
  • Updated: 2021-06-10
  • Resolved: 2021-06-10
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.
Other
tbdFixed
Related Reports
Relates :  
Relates :  
Relates :  
Description
In 6379795, HP reported that there were missing memory barriers in the push(), push_slow(), pop_global(), and pop_local_slow() between _age and _bottom fields.

As part of 688847, store barriers were added to the push() and push_slow() routines but the others mentioned in 6379795 were missed.

Recently SAP have submitted a patch to the OpenJDK that is a superset of these ordered memory operations.

This CR is to track this.
Comments
Barriers are there in the recent version. Closing this very old bug.
10-06-2021

There doesn't seem to be away to have the bug in "Cause Known" without having the bug in the "In Progress" state, so the bug is currently left in the "Open" state.
16-03-2016

needs to be retested
25-09-2014

Some of this was addressed under JDK-8012144. The code needs to be examined in depth to check the validity of the algorithm on all platforms.
07-08-2013

After looking at the patch from SAP, along with the comments from various sources in the other CRs, the main change in the patch was to order access to the _bottom and _age fields in various routines in GenericTaskQueue. The attached patch provides ordered access to the _bottom field in: GenericTaskQueue::oops_do() GenericTaskQueue::push() GenericTaskQueue::push_slow() GenericTaskQueue::pop_global() GenericTaskQueue::pop_local() This differs from the SAP patch in that accesses to the _age field (and it's sub-fields) are still unordered. An engineer who is working on ppc code indicated that he was seeing reproducible test crashes that went away when the SAP patch was applied. I asked the engineer to try out the attached patch. He did and his reply was: Hi John, I no longer see the issue running JDK8 with your fix incorporated. Without the fix the issue is reproducible. Thanks, Vlad On Feb 28, 2013, at 8:34 PM, John Cuthbertson wrote: > Hi Vladimir, > > Apologies for the delay in getting back to you. You can find the patch in the webrev at: http://XXXXX/8006971/webrev/ > > As you can see the change is pretty small. > > We may still have to order access to the _age field. > > JohnC The next steps are to ask SAP if the attached patch addresses their issues and then ensure that there are no performance issues.
04-03-2013