RFR: 8316229: Enhance class initialization logging

David Holmes dholmes at openjdk.org
Wed Sep 20 01:56:39 UTC 2023


On Tue, 19 Sep 2023 07:49:06 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> This change adds some additional debug logging to the class linking and initialization process. It was useful in diagnosing the deadlock described by:
>> 
>> https://bugs.openjdk.org/browse/JDK-8316469
>> 
>> See the example output in JBS issue.
>> 
>> The changes are mostly uncontroversial but I needed to expose a way to access the init thread's name, which can't use the regular `name()` method as the safety check doesn't recognise the calling context as being safe.
>> 
>> Testing:
>>  - manual examination of logging output
>>  - ran the only test that enables class+init logging: runtime/logging/ClassInitializationTest.java (no change as expected)
>>  - tiers1-3 sanity
>> 
>> Thanks.
>
> src/hotspot/share/oops/instanceKlass.cpp line 773:
> 
>> 771:   MonitorLocker ml(current, _init_monitor);
>> 772: 
>> 773:   bool debug_logging_enabled = log_is_enabled(Debug, class, init);
> 
> Here and later: Do we need to peel off the `log_is_enabled` check into a separate variable? We don't do it in most (all?) of our places.

ha! You'll see that was my last separate commit. It bugs me when we keep checking `log_is_enabled` over and over in the same chunk of code. Even though it is supposed to be fast it is surely fast with a local?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/15809#discussion_r1330866851


More information about the hotspot-dev mailing list