On Thu, 21 Sep 2023 18:20:36 GMT, Mandy Chung <mch...@openjdk.org> wrote:
>> `JVM_MoreStackWalk` has a bug that always assumes that the Java frame >> stream is currently at the frame decoded in the last patch and so always >> advances to the next frame before filling in the new batch of stack frame. >> However `JVM_MoreStackWalk` may return 0. The library will set >> the continuation to its parent. It then call `JVM_MoreStackWalk` to continue >> the stack walking but the last decoded frame has already been advanced. >> The Java frame stream is already at the top frame of the parent >> continuation. . >> The current implementation skips "Continuation::yield0" mistakenly. This >> only happens with `-XX:+ShowHiddenFrames` or >> `StackWalker.Option.SHOW_HIDDEN_FRAMES`. >> >> The fix is to pass the number of frames decoded in the last batch to >> `JVM_MoreStackWalk` >> so that the VM will determine if the current frame should be skipped or not. >> >> `test/jdk/jdk/internal/vm/Continuation/Scoped.java` test now correctly checks >> the expected result where "yield0" exists between "enter" and "run" frames. > > Mandy Chung has updated the pull request with a new target base due to a > merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains three additional > commits since the last revision: > > - Merge branch 'master' of https://github.com/openjdk/jdk into JDK-8316456 > - call setBatch to update origin and fence for an empty batch > - 8316456: StackWalker may skip Continuation::yield0 frame mistakenly Looks good to me, thanks. Patricio src/hotspot/share/prims/stackwalk.cpp line 189: > 187: // skip hidden frames for default StackWalker option (i.e. > SHOW_HIDDEN_FRAMES > 188: // not set) and when StackWalker::getCallerClass is called > 189: LogTarget(Debug, stackwalk) lt; Nit, leftover. ------------- Marked as reviewed by pchilanomate (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/15804#pullrequestreview-1638561745 PR Review Comment: https://git.openjdk.org/jdk/pull/15804#discussion_r1333514103