-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8372039: post_sampled_object_alloc is called while lock is handled #28544
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
Conversation
|
👋 Welcome back lmesnik! A progress list of the required criteria for merging this PR into |
|
@lmesnik 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 82 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 |
Webrevs
|
fisk
left a comment
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.
This is good, but we also use the _is_disable_suspend flag to disable JVMTI events for similar reasons, but only from the AOT thread. Now that we have a better more explicit boolean for disabling JVMTI events, perhaps we should stop toggling the _is_disable_suspend flag on the AOT thread, in favour of using this new more explicit mechanism.
Having said that, if we do, then the disabling mechanism needs to be able to cope with nesting. If you agree, then I don't mind if we want to do that refactoring separately from this fix though. The fix looks good otherwise.
fisk
left a comment
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.
...eg/serviceability/jvmti/events/SampledObjectAlloc/SamplingDuringInit/SamplingDuringInit.java
Outdated
Show resolved
Hide resolved
.../serviceability/jvmti/events/SampledObjectAlloc/SamplingDuringInit/libSamplingDuringInit.cpp
Show resolved
Hide resolved
.../serviceability/jvmti/events/SampledObjectAlloc/SamplingDuringInit/libSamplingDuringInit.cpp
Show resolved
Hide resolved
.../serviceability/jvmti/events/SampledObjectAlloc/SamplingDuringInit/libSamplingDuringInit.cpp
Show resolved
Hide resolved
.../serviceability/jvmti/events/SampledObjectAlloc/SamplingDuringInit/libSamplingDuringInit.cpp
Show resolved
Hide resolved
Co-authored-by: Alex Menkov <[email protected]>
Co-authored-by: Alex Menkov <[email protected]>
…loc/SamplingDuringInit/SamplingDuringInit.java Co-authored-by: Alex Menkov <[email protected]>
…loc/SamplingDuringInit/libSamplingDuringInit.cpp Co-authored-by: Alex Menkov <[email protected]>
Co-authored-by: Alex Menkov <[email protected]>
Co-authored-by: Alex Menkov <[email protected]>
Co-authored-by: Alex Menkov <[email protected]>
sspitsyn
left a comment
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.
The fix looks good in general. I've requested a minor test update though.
.../serviceability/jvmti/events/SampledObjectAlloc/SamplingDuringInit/libSamplingDuringInit.cpp
Show resolved
Hide resolved
|
@fisk, @alexmenkov, @sspitsyn Thank you for review and provided feedback |
|
Going to push as commit f5e4cd7.
Your commit was automatically rebased without conflicts. |
The AOT allocates objects while holding lock. The jvmti events can't be posted in such case. The allocation sampling might be just temporary disabled while AOT objects are allocated.
I prefer to disable jvmti events for allocation only, not for AOT globally. If there are more events should be generated during AOT initialization, we might want to preserve them and post after initialization is completed.
The existing failure could be reproduced by running tests with jvmti stress agent and ZGC enabled. Like
make run-test JTREG_JVMTI_STRESS_AGENT=debugger=true TEST=gc/z/TestGarbageCollectorMXBean.java
Note:
I prelaced NoJvmtiVMObjectAllocMark, it was not used. Also it was incorrect. The
NoJvmtiEventsMark should be set even if jvmti events are not enable for this thread. Since jvmti events might be enabled just in the middle of the mark.
Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/28544/head:pull/28544$ git checkout pull/28544Update a local copy of the PR:
$ git checkout pull/28544$ git pull https://git.openjdk.org/jdk.git pull/28544/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 28544View PR using the GUI difftool:
$ git pr show -t 28544Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/28544.diff
Using Webrev
Link to Webrev Comment