RFR: 8371093: Assert "section header string table should be loaded" failed on debug VM

Paul Hübner phubner at openjdk.org
Tue Nov 4 11:02:28 UTC 2025


On Sun, 2 Nov 2025 06:27:50 GMT, Yasumasa Suenaga <ysuenaga at openjdk.org> wrote:

> When the crash happens in the function in vDSO on Linux, native call stacks in hs_err log wouldn't be generated as following. See [hs_err log on JBS](https://bugs.openjdk.org/secure/attachment/116796/hs_err_pid4018.log) for details. Reproducer is also attached on JBS ([Test.java](https://bugs.openjdk.org/secure/attachment/116797/Test.java))
> 
> 
> Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
> C [linux-vdso.so.1+0xe69]
> [error occurred during error reporting (printing native stack (with source info)), id 0xe0000000, Internal Error (/home/yasuenag/github-forked/jdk/src/hotspot/share/utilities/elfFile.cpp:536)]
> 
> Retrying call stack printing without source information...
> 
> [error occurred during error reporting (retry printing native stack (no source info)), id 0xb, SIGSEGV (0xb) at pc=0x00007fba8075f791]
> 
> 
> When I checked back trace on GDB, it failed at `assert`.
> 
> #12 0x00007fba7e76bd00 in report_vm_error (file=file at entry=0x7fba7fed7b40 "/home/yasuenag/github-forked/jdk/src/hotspot/share/utilities/elfFile.cpp",
>     line=line at entry=536, error_msg=error_msg at entry=0x7fba80019575 "assert(false) failed",
>     detail_fmt=detail_fmt at entry=0x7fba7fed7bf0 "section header string table should be loaded")
>     at /home/yasuenag/github-forked/jdk/src/hotspot/share/utilities/debug.cpp:196
> #13 0x00007fba7e886eb3 in ElfFile::read_section_header (this=0x7fba782a1650, name=0x7fba800367d4 ".gnu_debuglink", hdr=...)
>     at /home/yasuenag/github-forked/jdk/src/hotspot/share/utilities/elfFile.cpp:536
> #14 ElfFile::read_debug_info (this=this at entry=0x7fba782a1650, debug_info=debug_info at entry=0x7fba7dd05150)
>     at /home/yasuenag/github-forked/jdk/src/hotspot/share/utilities/elfFile.cpp:407
> 
> 
> 
> (gdb) f 13
> #13 0x00007fba7e886eb3 in ElfFile::read_section_header (this=0x7fba782a1650, name=0x7fba800367d4 ".gnu_debuglink", hdr=...)
>     at /home/yasuenag/github-forked/jdk/src/hotspot/share/utilities/elfFile.cpp:536
> 536 assert(false, "section header string table should be loaded");
> 
> 
> vDSO is not a regular ELF, so it should be skipped here.

>From the manpage:
> The name of the vDSO varies across architectures.  It will often
       show up in things like glibc's [ldd(1)](https://man7.org/linux/man-pages/man1/ldd.1.html) output.  The exact name
       should not matter to any code, so do not hardcode it.
       
Just throwing an idea out there, since we are hardcoding the name, would it be worth to add an `else` clause to your `if`, in which we `assert` that `filepath` does not contain `vdso` or `linux-gate.so`?

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

PR Review: https://git.openjdk.org/jdk/pull/28102#pullrequestreview-3415738465


More information about the hotspot-dev mailing list