RFR: 8315373: Change VirtualThread to unmount after freezing, re-mount before thawing

Markus Grönlund mgronlun at openjdk.org
Thu Aug 31 13:33:01 UTC 2023


On Thu, 31 Aug 2023 11:41:03 GMT, Alan Bateman <alanb at openjdk.org> wrote:

>> src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp line 410:
>> 
>>> 408:   }
>>> 409:   if (JAVA_SAMPLE == type) {
>>> 410:     if (thread_state_in_java(thread) && !is_vthread_in_transition(thread)) {
>> 
>> I think this check can be postponed until after the thread is suspended.
>
> Is the check in OSThreadSampler::protected_task in the right place? That seems to be a suspended context.
> 
> For JfrThreadSampleClosure::do_sample_thread, I think I may have mis-read the code. I thought it was suspended but looking at it again them maybe it should be the JfrNativeSamplerCallback implementation. This is probably an area where I need help to get right.

OSThreadSampler::protected_task() is the correct place to perform the test. The sampled thread is completely suspended at this location. The other locations are optimistic, they read the thread state while the sampled thread is running to avoid signalling a thread unnecessarily. You don't need the is_vthread_in_transtition() check there, especially not for the thread_in_native case, since that would not be possible, would it?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/15492#discussion_r1311632129


More information about the serviceability-dev mailing list