On Thu, 1 Aug 2024 22:00:52 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:

>> Serguei Spitsyn has updated the pull request incrementally with two 
>> additional commits since the last revision:
>> 
>>  - fix typo in a comment
>>  - corrections in test ClassPrepare event handler
>
> test/hotspot/jtreg/serviceability/jvmti/StartPhase/AllowedFunctions/libAllowedFunctions.c
>  line 359:
> 
>> 357:     // Block VMDeath event and other ClassPrepare events while this 
>> callback is executed.
>> 358:     // Sync with VMDeath event guards agains JVMTI_ERROR WRONG_PHASE.
>> 359:     err = (*jvmti)->RawMonitorEnter(jvmti, event_mon);
> 
> I don't see how this fixes the problem. You can be exiting VMDeath when this 
> monitor is entered. This does not block the get_thread_local() call below, 
> which is what leads to the WRONG_PHASE. I think using a raw monitor is the 
> right approach, but I was expecting to see VMDeath set a flag after grabbing 
> the monitor that indicated VMDeath had been called. Then ClassPrepare should 
> check this flag after grabbing the monitor and ignore the event if it is set.

Thank you for the comment.
Fixed the `get_thread_local()` issue and corrected phase check.
New flag is not really needed as the `phase == JVMTI_PHASE_DEAD` can play its 
role.
Please, let me know if you are not okay with that.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20397#discussion_r1702299177

Reply via email to