On Fri, 14 Aug 2026 21:07:00 GMT, Leonid Mesnik <[email protected]> wrote:
>> The class `ThreadSnapshot$ThreadLock` is internal ThreadSnapshot class.
>> The `ThreadSnapshot` and `ThreadSnapshot$ThreadLock` are created and filled
>> by VM. The objects for `ThreadLock` are
>>
>> The crash originally appeared when jcmd ThreadDump was called for timed-out
>> test `compiler/c2/Test6603011.java`. The test is executed with `-Xcomp
>> -XX:-Inline` which is required to reproduce the issue.
>> In other cases the klass initialized by interpreter or compiler.
>>
>> This is why this crash was not find by jcmd test that test how jcmd works
>> for monitors.
>> created but the class is not initialized.
>>
>> BTW, the `ThreadSnapshot` is initialized
>>
>> if (snapshot_klass->should_be_initialized()) {
>> snapshot_klass->initialize(CHECK_NULL);
>> }
>>
>>
>> Note: `-XX:CompileCommand=compileonly,*ThreadSnapshot*::*` in test is to
>> reduce execution time only, test fails without it.
>>
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Leonid Mesnik has updated the pull request incrementally with one additional
> commit since the last revision:
>
> updated after feedback in PR
Interesting omission. I wonder where the class otherwise gets initialized? I
would have expected to see this cause more problems.
Fix is good but one minor suggestion on placement.
One suggestion for the test as well.
Thanks
test/jdk/jdk/internal/vm/ThreadSnapshot/ThreadLockClassInit.java line 31:
> 29: * @modules java.base/jdk.internal.vm
> 30: * @run main ThreadLockClassInit
> 31: * @run main/othervm -Xcomp -XX:-Inline
> -XX:CompileCommand=compileonly,*ThreadSnapshot*::* ThreadLockClassInit
If running with -Xcomp then this test should probably be flagless.
-------------
PR Review: https://git.openjdk.org/jdk/pull/32363#pullrequestreview-4947436268
PR Review Comment: https://git.openjdk.org/jdk/pull/32363#discussion_r3792956404