On Wed, 4 Nov 2026 12:02:29 GMT, Andrei Pangin <[email protected]> wrote:
>> Can the sampler issue a an interrupt while the thread is still in
>> _thread_new?
>>
>> You are safe anyway, because the thread has already been assigned an id.
>>
>> But if you are not sampling _thread_new states, then the alternative fix
>> makes sense.
>
> In theory, it can: `JfrCPUTimeThreadSampling::on_javathread_create` arms CPU
> timer, so that a thread may start receiving signals. However, for threads in
> `_thread_new` state, the signal handler does nothing but incrementing the
> `lost_samples` counter.
>
> The only lengthy operation that happens in between is creating stack guard
> pages. Whether to include it in cpu-time measurement or not, does not make
> much difference in practice, imo.
Could be folded into:
JavaThread* const jt = JavaThread::cast(t);
if (jt->thread_state() == _thread_in_vm) {
JfrCPUTimeThreadSampling::on_javathread_create(jt);
if (tl->should_write()) {
JfrCheckpointManager::write_checkpoint(t);
}
send_java_thread_start_event(jt);
if (tl->has_cached_stack_trace()) {
tl->clear_cached_stack_trace();
}
return;
}
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/33678#discussion_r4468261493