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