-
Notifications
You must be signed in to change notification settings - Fork 5.8k
8305765: CompressedClassPointers.java is unreliable due to ASLR #16014
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
8305765: CompressedClassPointers.java is unreliable due to ASLR #16014
Conversation
/label add hotspot-runtime |
👋 Welcome back ccheung! A progress list of the required criteria for merging this PR into |
@calvinccheung |
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.
@calvinccheung 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 17 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 @iklam for the review! /integrate |
Going to push as commit ddacf92.
Your commit was automatically rebased without conflicts. |
@calvinccheung Pushed as commit ddacf92. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Wait, I don't get this. This test tests the ability of the platform to place the CCS in lower address space regions. Failing that and falling back to reserving anywhere should count as a failure. To put it another way, if the logic that tries to reserve low address memory is broken, this test should fail, not accept the fallback solution as success. That is not to say that this test is not fragile. It is. It makes sense to revise it, and tweak it to have a higher success rate. E.g. reduce the CCS size drastically. But with, say, a 64M class space, no CDS, and a tiny heap, it should be possible to find some free space below 32G. Looking at the test, it also may make sense to remove the dependency on UseCompressedOops. Side note: Don't we need two reviewers for hotspot code? Or does this rule not apply for tests? |
I agree that we should revise the fix as we are still seeing intermittent failures on Windows-x64 with the fix. See JDK-8317610 which seems to fail similarly to a previous bug JDK-8283249. The
For a test only fix, only 1 review is required. Since this fix involves adding a log statement in the hotspot code, I agree that the rule has been followed completely. (BTW, I'm on vacation for a few days until Oct. 13) |
If it qualified as trivial yes. The rule for reviews doesn't say anything about test-only changes:
|
A new log statement is added to the
Metaspace::global_initialize
function to indicate that the compress class space is being allocate at an address chosen by the platform. TheCompressedClassPointers.java
test will base on the log output before checking the expectedNarrow klass base
output.Passed tiers 1 - 3 testing.
Also ran the test on linux-aarch64 and linux-aarch64-debug platforms, 30 times each.
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/16014/head:pull/16014
$ git checkout pull/16014
Update a local copy of the PR:
$ git checkout pull/16014
$ git pull https://git.openjdk.org/jdk.git pull/16014/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 16014
View PR using the GUI difftool:
$ git pr show -t 16014
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/16014.diff
Webrev
Link to Webrev Comment