RFR: 8373110: jstack --mixed frames are broken on macOS after JDK-8371194 [v3]
Yasumasa Suenaga
ysuenaga at openjdk.org
Thu Dec 18 00:19:50 UTC 2025
On Wed, 17 Dec 2025 19:06:22 GMT, Kevin Walls <kevinw at openjdk.org> wrote:
>> Yasumasa Suenaga has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Check RBP
>
> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/bsd/aarch64/BsdAARCH64CFrame.java line 99:
>
>> 97: CodeBlob currentBlob = cc.findBlobUnsafe(pc());
>> 98:
>> 99: // This case is different from HotSpot. See JDK-8371194 for details.
>
> Looks good overall I think.
> What does "different from HotSpot" mean?
> I see we used that phrase in 8371194 also in LinuxAARCH64CFrame.java
> Maybe it is saying that these codeBlobs are handled differently from other code?
Yes. We were trying to implement similar code with NativeStackPrinter used in generating hs_err log in HotSpot, but this condition is different with it.
Comments in 8371195 says:
> The special case for currentBlob.isContinuationStub() || currentBlob.isNativeMethod()) is needed compared to os::get_sender_for_C_frame because, unlike in the VM, here we are walking those frames as native C frames. Without the special case we depend on nextFP which might not be valid unless -XX:+PreserveFramePointer is used.
In os_bsd_aarch64.cpp, comment of `get_sender_for_C_frame()` says JVM compiled with `-fno-omit-frame-pointer`, but we can override `CFLAGS` with configure options. Thus I think it is better to align with Linux AArch64. Actually I heard this code works fine on Mac AArch64 - mixed jstack unwinded native methods successfully like `java.lang.ref.Reference.waitForReferencePendingList()`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/28686#discussion_r2629035449
More information about the serviceability-dev
mailing list