On Thu, 30 Mar 2023 00:55:59 GMT, Serguei Spitsyn <[email protected]> wrote:
>> src/hotspot/share/prims/jvmtiEnvBase.cpp line 1550:
>>
>>> 1548:
>>> 1549: if (jt->is_in_VTMS_transition()) {
>>> 1550: count++;
>>
>> For those threads that are in a transition when we enable the events,
>> shouldn't we also set the jvmti_is_in_VTMS_transition field for the
>> corresponding vthread as we do in
>> JvmtiVTMSTransitionDisabler::start_VTMS_transition()? It seems a
>> JvmtiVTMSTransitionDisabler that targets that particular vthread could
>> otherwise proceed after the safepoint while that vthread is still in the
>> transition. The "all" JvmtiVTMSTransitionDisabler won't proceed because that
>> one does check the _VTMS_transition_count counter. I see that in general we
>> won't have access to the vthread oop though.
>
> Nice catch, thanks!
> Fixed now, but will push it together with other potential updates related to
> your review comments.
The issue I see is that during a transition the vt_oop that we'll get will
almost always be that of the carrier thread, because it's almost the first
thing we change when unmounting, and the last we change when mounting.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13133#discussion_r1153672474