RFR: 8299240: rank of JvmtiVTMSTransition_lock can be safepoint

David Holmes dholmes at openjdk.org
Tue Feb 21 00:50:25 UTC 2023


On Sat, 18 Feb 2023 01:33:16 GMT, Serguei Spitsyn <sspitsyn at openjdk.org> wrote:

>> Thank you for looking at this PR, David!
>> Please, note a disabler at L938. A safepont can be reached in its destructor.
>> Also, see the comment at L952:
>> 
>>  937   {
>>  938     JvmtiVTMSTransitionDisabler disabler(true);
>>  939     ThreadsListHandle tlh(current);
>>  940 
>>  941     err = get_threadOop_and_JavaThread(tlh.list(), thread, &java_thread, &thread_oop);
>>  942     if (err != JVMTI_ERROR_NONE) {
>>  943       return err;
>>  944     }
>>  945 
>>  946     // Do not use JvmtiVTMSTransitionDisabler in context of self suspend to avoid deadlocks.
>>  947     if (java_thread != current) {
>>  948       err = suspend_thread(thread_oop, java_thread, /* single_suspend */ true, nullptr);
>>  949       return err;
>>  950     }
>>  951     // protect thread_oop as a safepoint can be reached in disabler destructor
>>  952     self_tobj = Handle(current, thread_oop);
>>  953   }
>
>> it means there are now many places that can block for safepoints that previously wouldn't and it is very to hard to tell if that is okay or not.
> 
> We partially rely on testing and good test coverage here.

Okay we can see how this goes.

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

PR: https://git.openjdk.org/jdk/pull/12550


More information about the serviceability-dev mailing list