On Tue, 31 Mar 2026 15:06:18 GMT, Matthias Baesken <[email protected]> wrote:
> When building a JVM with -ffunction-sections in the C/C++ compile flags, the > gtest os_linux.decoder_get_source_info_valid_vm fails and delivers another > result > > > [ RUN ] os_linux.decoder_get_source_info_valid_vm > test/hotspot/gtest/runtime/test_os_linux.cpp:404: Failure > Expected equality of these values: > buf > Which is: "test_os_linux.cpp" > "jniCheck.hpp" > > [ FAILED ] os_linux.decoder_get_source_info_valid_vm (20 ms) > > > So for this compilation mode, it is probably better to avoid the check for > this specific header. When I try addr2line to gdb on ReportJNIFatalError I still see jniCheck.hpp as source file. So maybe our decoder has some issues ? We should probably ask some people more familiar with the decoder (David any suggestions?) . Here is what I see in gdb (objdump gived me the start address 000000000064fb20 l F .text 0000000000000039 ReportJNIFatalError ) (gdb) disassemble /s 0x000000000064fb20, 0x000000000064fb80 Dump of assembler code from 0x64fb20 to 0x64fb80: src/hotspot/share/prims/jniCheck.hpp: 36 src/hotspot/share/prims/jniCheck.hpp: No such file or directory. 37 in src/hotspot/share/prims/jniCheck.hpp 0x000000000064fb20 <ReportJNIFatalError(JavaThread*, char const*)+0>: push %rbp 0x000000000064fb21 <ReportJNIFatalError(JavaThread*, char const*)+1>: mov %rsi,%rdx 0x000000000064fb24 <ReportJNIFatalError(JavaThread*, char const*)+4>: lea 0x106d27d(%rip),%rsi # 0x16bcda8 36 in src/hotspot/share/prims/jniCheck.hpp 0x000000000064fb2b <ReportJNIFatalError(JavaThread*, char const*)+11>: mov %rsp,%rbp 0x000000000064fb2e <ReportJNIFatalError(JavaThread*, char const*)+14>: push %rbx 0x000000000064fb2f <ReportJNIFatalError(JavaThread*, char const*)+15>: mov %rdi,%rbx 0x000000000064fb32 <ReportJNIFatalError(JavaThread*, char const*)+18>: sub $0x8,%rsp 37 in src/hotspot/share/prims/jniCheck.hpp 0x000000000064fb36 <ReportJNIFatalError(JavaThread*, char const*)+22>: lea 0x14425ab(%rip),%rax # 0x1a920e8 <tty> 0x000000000064fb3d <ReportJNIFatalError(JavaThread*, char const*)+29>: mov (%rax),%rdi 0x000000000064fb40 <ReportJNIFatalError(JavaThread*, char const*)+32>: xor %eax,%eax 0x000000000064fb42 <ReportJNIFatalError(JavaThread*, char const*)+34>: call 0x1195ba0 <outputStream::print_cr(char const*, ...)> 38 in src/hotspot/share/prims/jniCheck.hpp 0x000000000064fb47 <ReportJNIFatalError(JavaThread*, char const*)+39>: mov %rbx,%rdi 0x000000000064fb4a <ReportJNIFatalError(JavaThread*, char const*)+42>: call 0xda9d20 <JavaThread::print_jni_stack()> 39 in src/hotspot/share/prims/jniCheck.hpp 0x000000000064fb4f <ReportJNIFatalError(JavaThread*, char const*)+47>: mov $0x1,%edi 0x000000000064fb54 <ReportJNIFatalError(JavaThread*, char const*)+52>: call 0x117c610 <os::abort(bool)> So jniCheck.hpp is correctly printed in gdb. Not sure why our decoder behaves differently. ------------- PR Comment: https://git.openjdk.org/jdk/pull/30516#issuecomment-4206139993
