RFR: 8286580: serviceability/jvmti/vthread/GetSetLocalTest failed with assert: Not supported for heap frames [v2]
Serguei Spitsyn
sspitsyn at openjdk.org
Wed Jun 22 21:27:51 UTC 2022
On Tue, 21 Jun 2022 19:34:28 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:
>> Serguei Spitsyn has updated the pull request incrementally with one additional commit since the last revision:
>>
>> remove _depth == 0 clause from sanity check assert
>
> src/hotspot/share/prims/jvmtiImpl.cpp line 647:
>
>> 645: }
>> 646: if (_set) {
>> 647: if (fr.is_heap_frame()) { // we want this check after the check for JVMTI_ERROR_INVALID_SLOT
>
> It would be good to elaborate a bit more on this check. Say something about it being a "safepoint poll on return in the oldest thawed frame", and why that is a problem.
Okay. I'd suggest this:
if (_set) {
if (fr.is_heap_frame()) { // we want this check after the check for JVMTI_ERROR_INVALID_SLOT
assert(Continuation::is_frame_in_continuation(_jvf->thread(), fr), "sanity check");
// The topmost frame of a mounted continuation can still be in the heap. This code is executed at safepoint.
// The safepoint could be as we return to the return barrier but before we execute it (poll return).
_result = JVMTI_ERROR_OPAQUE_FRAME; // deferred locals currently unsupported in continuations
return;
}
Is it more clear?
-------------
PR: https://git.openjdk.org/jdk19/pull/42
More information about the serviceability-dev
mailing list