On Thu, 21 May 2026 06:42:00 GMT, Yasumasa Suenaga <[email protected]> wrote:
> `jhsdb jstack --mixed` would try to unwind all of native call frames. It will > reach `_start()` (startup routine by glibc), but it couldn't on the JDK built > by older glibc such as glibc-2.12 (used in devkit for Linux x86_64). > > Expected: > > 0x000055ad324dfadb main + 0x13b > 0x00007f3df876c681 __libc_start_call_main + 0x81 > 0x00007f3df876c798 __libc_start_main_alias_2 + 0x88 > 0x000055ad324dfb79 _start + 0x25 > > > Actual (no `_start` in call stacks): > > 0x000055ad324dfadb main + 0x13b > 0x00007f3df876c681 __libc_start_call_main + 0x81 > 0x00007f3df876c798 __libc_start_main_alias_2 + 0x88 > > > Startup routine would be provided by crt1.o, and it would be linked into > `java`. `_start()` in crt1.o by glibc-2.12 does not have Frame Description > Entry (FDE) in DWARF. In DWARF parser in SA assumes native function has FDE, > thus unwinder in SA would stop if it cannot find appropriate DWARF > information. > > I saw the problem on `_start()` only so far. This is not critical, but same > problem can happen on other places (functions / libraries). We cannot find > caller frame from DWARF-less function of course, but we should show the frame > even if it does not have DWARF. > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai). src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java line 104: > 102: } > 103: > 104: senderFP = getSenderFP(senderFP); Why is this needed for ARM64, but not AARCH64? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/31230#discussion_r3455125795
