On Sat, 18 Feb 2023 01:33:16 GMT, Serguei Spitsyn <sspit...@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