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
8261759: ZGC: ZWorker Threads Continue Marking After System.exit() called #3453
Conversation
|
Webrevs
|
PR updated with "Forward in-place if GC aborted" commit. This resolves a possible dead-lock during JVM shutdown where the GC has been ordered to stop/abort but there are Java threads that failed to relocate an object and are now waiting for the GC to do it for them. In this cases, we signal to all such waiters that the GC har aborted and that they should just go ahead and forward the object in-place. |
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, thanks for adding the comment for the macro.
@pliden This change now passes all automated pre-integration checks. 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
|
Thanks @albertnetymk and @kstefanj for reviewing! /integrate |
During JVM termination, ZCollectedHeap::stop() currently only returns once any ongoing GC cycle has completed. However, waiting for a GC cycle to complete can take awhile, so the JVM might not terminate as promptly as one might expect.
This patch adds abortion checks to workers doing marking and relocation to allow ZWorker threads to terminate promptly. In addition, before and after concurrent phases, the ZDriver thread checks if
should_terminate()
is true and prematurely terminates the GC cycle if that's the case.Testing:
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/3453/head:pull/3453
$ git checkout pull/3453
Update a local copy of the PR:
$ git checkout pull/3453
$ git pull https://git.openjdk.java.net/jdk pull/3453/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 3453
View PR using the GUI difftool:
$ git pr show -t 3453
Using diff file
Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/3453.diff