-
Notifications
You must be signed in to change notification settings - Fork 5.6k
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
8320331: G1 Full GC Heap verification relies on metadata not reset before verification #16733
8320331: G1 Full GC Heap verification relies on metadata not reset before verification #16733
Conversation
👋 Welcome back tschatzl! A progress list of the required criteria for merging this PR into |
/label add hotspot-gc |
@tschatzl |
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!
Minor:
- update the comment associated with
_parsable_bottom
- Add a comment to
prepare_for_full_gc
to hint on why this is required.
@tschatzl 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 44 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 |
@@ -167,6 +167,13 @@ inline size_t HeapRegion::block_size(const HeapWord* p, HeapWord* const pb) cons | |||
return cast_to_oop(p)->size(); | |||
} | |||
|
|||
inline void HeapRegion::prepare_for_full_gc() { |
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.
I don't believe this API should be part of this class. It appears entirely caller-specific, and it's unclear why the implementation is just a field-update without knowledge of the caller context. While the comment helps mitigate the situation, making it acceptable for a bugfix, I think it would be more appropriate to relocate methods related to parsable-bottom outside of this class.
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.
I don't believe this API should be part of this class. It appears entirely caller-specific,
All of these _for_full_gc
/_after_full_gc
methods (and note_*_marking/scrubbing
methods for concurrent mark) are caller specific, for exactly one caller, for a particular situation the caller encounters. Is there something particularly problematic with this exact method compared to others?
and it's unclear why the implementation is just a field-update without knowledge of the caller context. While the comment helps mitigate the situation, making it acceptable for a bugfix, I think it would be more appropriate to relocate methods related to parsable-bottom outside of this class.
So basically _parsable_bottom
(and _top_at_mark_start
since it is very similar to PB) fields should be somewhere else then? I think there is a CR for moving TAMS somewhere else, there is nothing for PB.
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.
Is there something particularly problematic with this exact method compared to others?
No; all of them require caller-info to understand the impl.
fields should be somewhere else then?
Yes, because they are constructed/maintained by sth external to heap-region, IMO.
Thanks @albertnetymk @walulyai for your reviews |
Going to push as commit 1629a90.
Your commit was automatically rebased without conflicts. |
Hi all,
please review this fix to full gc to properly set
parsable_bottom
for the heap regions marked through so that "during" verification (-XX:+VerifyDuringGC
) does not access metadata already unlinked but not yet completely purged.The test case reproduces crashes fairly well without the patch; the new test case is run with debug VMs only purely to save testing time.
Testing: gha, test case
Thanks,
Thomas
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/16733/head:pull/16733
$ git checkout pull/16733
Update a local copy of the PR:
$ git checkout pull/16733
$ git pull https://git.openjdk.org/jdk.git pull/16733/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 16733
View PR using the GUI difftool:
$ git pr show -t 16733
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/16733.diff
Webrev
Link to Webrev Comment