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

Changes look good and passed my testing.

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

Marked as reviewed by cjplummer (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/31230#pullrequestreview-4572890166

Reply via email to