-
Notifications
You must be signed in to change notification settings - Fork 6.1k
JDK-8283670: gtest os.release_multi_mappings_vm is still racy #7953
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
JDK-8283670: gtest os.release_multi_mappings_vm is still racy #7953
Conversation
👋 Welcome back stuefe! A progress list of the required criteria for merging this PR into |
Webrevs
|
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.
LGTM.
@tstuefe 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 45 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 |
Thank you Martin! Could I have a second review to get this on its way? |
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. One minor nit below.
if (q == NULL) { | ||
// Someone grabbed that area concurrently. Cleanup, then retry. | ||
tty->print_cr("reserve_multiple: retry (%d)...", stripe); | ||
if (stripe > 0) { |
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.
Nit: you don't need to check this as carefully_release_multiple
is a no-op for num_stripes==0
.
Thanks @dholmes-ora. /integrate |
Going to push as commit 2e9fd56.
Your commit was automatically rebased without conflicts. |
JDK-8280940 fixed up os.release_multi_mappings_vm to make its handling of multiple neighboring reservations less racy, but I forgot to fix up the reserve_multiple() function, which follows the same pattern and is still racy. It reserves an area, releases it, then re-reserves stripes in that area.
We see intermittent problems on Linux PPC. This makes sense because we have here 64k pages, and therefore the stripe size is large, and we have a higher chance of someone grabbing that address space concurrently between the release and the stripe-wise re-reserve.
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/7953/head:pull/7953
$ git checkout pull/7953
Update a local copy of the PR:
$ git checkout pull/7953
$ git pull https://git.openjdk.java.net/jdk pull/7953/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 7953
View PR using the GUI difftool:
$ git pr show -t 7953
Using diff file
Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/7953.diff