RFR: 8373110: jstack --mixed frames are broken on macOS after JDK-8371194 [v3]

Kevin Walls kevinw at openjdk.org
Thu Dec 18 09:20:28 UTC 2025


On Thu, 18 Dec 2025 00:17:02 GMT, Yasumasa Suenaga <ysuenaga at openjdk.org> wrote:

>> 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()`.

OK, so this is different to the HotSpot NativeStackPrinter and the frame::next_frame() method.
As we already have the comment in a similar method maybe no need to change it here.
Thanks.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28686#discussion_r2630228294


More information about the serviceability-dev mailing list