-
Notifications
You must be signed in to change notification settings - Fork 5.8k
8312174: missing JVMTI events from vthreads parked during JVMTI attach #15467
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 sspitsyn! A progress list of the required criteria for merging this PR into |
Webrevs
|
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/VThreadEventTest.java
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/VThreadEventTest.java
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/VThreadEventTest.java
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/libVThreadEventTest.cpp
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/VThreadEventTest.java
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/VThreadEventTest.java
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/libVThreadEventTest.cpp
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/libVThreadEventTest.cpp
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/libVThreadEventTest.cpp
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/VThreadEventTest.java
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/VThreadEventTest.java
Show resolved
Hide resolved
I've pushed an update.
Some of new test updates:
|
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.
Could you please add comment why standard CountDownLatch doesn't work for this test.
@sspitsyn 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 54 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 |
Okay. Added comment. |
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/VThreadEventTest.java
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/VThreadEventTest.java
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/VThreadEventTest.java
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/libVThreadEventTest.cpp
Outdated
Show resolved
Hide resolved
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest/libVThreadEventTest.cpp
Outdated
Show resolved
Hide resolved
Leonid and Alex, thank you a lot for review and discussions! |
/integrate |
Going to push as commit fda142f.
Your commit was automatically rebased without conflicts. |
This update fixes two important issues:
JvmtiThreadState's
for virtual threadsThe issue is tricky to fix because the existing mechanism of the JVMTI event management does not support unmounted virtual threads. The JVMTI
SetEventNotificationMode()
calls the functionJvmtiEventControllerPrivate::recompute_enabled()
which inspects a
JavaThread's
list and for each thread in the list recomputes enabled event bits with the functionJvmtiEventControllerPrivate::recompute_thread_enabled()
. TheJvmtiThreadState
of each thread is created but only when it is really needed, eg, if any of the thread filtered events is enabled. There was an initial adjustment of this mechanism for virtual threads which accounted for both carrier and virtual threads when a virtual thread is mounted. However, it does not work for unmounted virtual threads. A temporary work around was to always createJvmtiThreadState
for each virtual thread eagerly at a thread starting point.This fix introduces new function
JvmtiExport::get_jvmti_thread_state()
which checks if thread is virtual and there is a thread filtered event enabled globally, and if so, forces a creation of theJvmtiThreadState
. Another adjustment was needed because the functionstate_for_while_locked()
can be called directly in some contexts. New functionJvmtiEventController::recompute_thread_filtered()
was introduced to make necessary corrections.Testing:
test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadEventTest
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/15467/head:pull/15467
$ git checkout pull/15467
Update a local copy of the PR:
$ git checkout pull/15467
$ git pull https://git.openjdk.org/jdk.git pull/15467/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 15467
View PR using the GUI difftool:
$ git pr show -t 15467
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/15467.diff
Webrev
Link to Webrev Comment