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

Reply via email to