-
Notifications
You must be signed in to change notification settings - Fork 37
8310062: [Shenandoah] Incomplete SATB buffers may not be processed during degenerated young collection #287
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8310062: [Shenandoah] Incomplete SATB buffers may not be processed during degenerated young collection #287
Conversation
In generational mode, the SATB barrier for old marking could pick up pointers after final mark.
|
👋 Welcome back wkemper! A progress list of the required criteria for merging this PR into |
Webrevs
|
|
@earthling-amzn 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 no new commits pushed to the ➡️ To integrate this PR with the above commit message to the |
|
/integrate |
|
@earthling-amzn This pull request has not yet been marked as ready for integration. |
|
/integrate |
|
@earthling-amzn |
|
/integrate |
|
Going to push as commit 421f949. |
|
@earthling-amzn Pushed as commit 421f949. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
When Shenandoah's young generation exhausts available memory, it transitions to a "degenerated" cycle. If old marking is in progress, SATB queues need to be drained before evacuation to avoid invalidating any pointers in the queues. In the case when old marking is active and the concurrent collection failed during root scan, the SATB queues might not be drained - this is an error.
The change here moves handling of the old pointers in the SATB queues to the case when degeneration occurs during the root scan. We could rely on SATB processing in the degenerated mark case, but we would still need the explicit methods for handling old pointers during the concurrent cycles.
The verifier has also been modified to check that all SATB buffers are empty after marking is complete. This is only valid after marking is completed on the safepoint. If concurrent marking for old is in progress, the SATB queues are not expected to be empty during other phases of a concurrent young collection.
Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/shenandoah.git pull/287/head:pull/287$ git checkout pull/287Update a local copy of the PR:
$ git checkout pull/287$ git pull https://git.openjdk.org/shenandoah.git pull/287/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 287View PR using the GUI difftool:
$ git pr show -t 287Using diff file
Download this PR as a diff file:
https://git.openjdk.org/shenandoah/pull/287.diff
Webrev
Link to Webrev Comment