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

Reply via email to