running java with LD_DEBUG-tracing

David Holmes david.holmes at oracle.com
Wed Dec 18 12:51:52 UTC 2019


On 18/12/2019 10:43 pm, David Holmes wrote:
> On 18/12/2019 7:43 pm, Baesken, Matthias wrote:
>> Hello, I  recently worked a bit with  the  "verbose debugging 
>> information"  output  about operations of the   dynamic linker  (to 
>> sort out some lib loading issues) .
>> See
>>
>> https://docs.oracle.com/cd/E19683-01/816-1386/chapter3-33/index.html
>> http://man7.org/linux/man-pages/man8/ld.so.8.html
>>
>>    about the LD_DEBUG  flag.
>>
>>
>> By chance I noticed  the following  output when running a trivial Java 
>> program  :
>>
>> LD_DEBUG=libs     /linuxx86_64/output-jdk-test/images/jdk/bin/java   Test
>>    . . .
>>       12241:
>>       12241:             
>> /linuxx86_64/output-jdk-test/images/jdk/lib/libjava.so: error: symbol 
>> lookup error: undefined symbol: 
>> Java_jdk_internal_reflect_Reflection_getCallerClass (fatal)
>>       12241:
>>
>> What is wrong with  
>> "Java_jdk_internal_reflect_Reflection_getCallerClass"  ?
>> Does the error message  occur because of  the naming  
>> Java_jdk_internal_reflect_Reflection_getCallerClass__  with the added 
>> "__"  at the end of the method  (Reflection.c) ?
> 
> That definitely looks like an error in the C source to me. The ending 
> "__" should not be there. How is this working ??

Ah! It is a remnant of when there were overloads of getCallerClass. The 
"__" should be followed by the signature - which is empty in this case. 
So IIRC the lookup will first try to use the short name (without the 
trailing "__") which will fail, then it will use the long name which 
will succeed.

It should be fixed so we don't waste time doing two lookups.

David

> 
> David
> 
>>
>>
>> Best regards, Matthias
>>
>>


More information about the core-libs-dev mailing list