RFR: 8340698: JVMTI FRAME_POP event is sometimes missed if NotifyFramePop is called as a method is returning [v4]

Alex Menkov amenkov at openjdk.org
Wed Oct 16 18:28:12 UTC 2024


On Wed, 16 Oct 2024 02:28:28 GMT, Serguei Spitsyn <sspitsyn at openjdk.org> wrote:

>> There is a race between JVMTI NotifyFramePop function and FramePop event posting code.
>> The fix is to return JVMTI_ERROR_OPAQUE_FRAME if if a FramePop event with depth 0 is requested by NotifyFramePop at the time when the target frame is in exit epilogue, and MethodExit/FramePop events are being posted for it.
>> 
>> Testing:
>>  - verified locally with new test (developed by Chris): `serviceability/jvmti/events/NotifyFramePopStressTest`
>>  - TBD: mach5 tiers 1-6
>
> Serguei Spitsyn has updated the pull request incrementally with one additional commit since the last revision:
> 
>   review: resolved comments from Alex and Chris

test/hotspot/jtreg/serviceability/jvmti/events/NotifyFramePopStressTest/libNotifyFramePopStressTest.cpp line 160:

> 158:   err= jvmti->NotifyFramePop(thread, 0);
> 159:   if (err == JVMTI_ERROR_OPAQUE_FRAME || err == JVMTI_ERROR_DUPLICATE) {
> 160:     LOG("\nNotifyFramePop for method %d returned acceptable error: %s\n", name, TranslateError(err));

format for 1st arg (name) should be `%s`
Suggestion:

    LOG("\nNotifyFramePop for method %s returned acceptable error: %s\n", name, TranslateError(err));

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21468#discussion_r1803604095


More information about the hotspot-dev mailing list