On Thu, 5 Feb 2026 02:29:53 GMT, Patricio Chilano Mateo 
<[email protected]> wrote:

>> src/java.base/share/classes/jdk/internal/vm/ThreadSnapshot.java line 63:
>> 
>>> 61:      */
>>> 62:     static ThreadSnapshot of(Thread thread) {
>>> 63:         ThreadSnapshot snapshot = thread.isAlive() ? create(thread) : 
>>> null;
>> 
>> Looking at the implementation of `Thread.isAlive` for platform threads I'm 
>> confused now. It checks `eetop != 0`, but we set it 
>> [here](https://github.com/openjdk/jdk/blob/949370ab0e701cfcc68cb84dd0f91e5db41f4f45/src/hotspot/share/runtime/javaThread.cpp#L1732),
>>  before we change the state to RUNNABLE 
>> [here](https://github.com/openjdk/jdk/blob/949370ab0e701cfcc68cb84dd0f91e5db41f4f45/src/hotspot/share/runtime/thread.cpp#L408).
>>  So I'm wondering if we could hit the assert added in the last update in 
>> `ThreadSnapshotFactory::get_thread_snapshot`.
>
> Never mind, the `GetThreadSnapshotHandshakeClosure` handshake will not 
> procede until the thread is started and becomes safepoint safe, which happens 
> after the state is set to RUNNABLE. The attached case is also fine for a 
> similar reason.

Thanks for the thorough analysis.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/29461#discussion_r2767772222

Reply via email to