[PATCH 5/6] support: Add support_thread_state_wait

Florian Weimer fweimer@redhat.com
Thu Dec 18 18:23:17 GMT 2025


* Adhemerval Zanella Netto:

> On 18/12/25 10:45, Florian Weimer wrote:
>> * Adhemerval Zanella:
>> 
>>> Same as support_process_state_wait, but wait for the task TID
>>> (obtained with gettid) from the current process.  Since the kernel
>>> might remove the /proc/<pid>/task/<tid>/status at any time if the
>>> thread terminates, the code needs to handle possible
>>> fopen/getline/fclose failures due to an inexistent file.
>> 
>> This does not guard against TID reuse.  I don't know how to accomplish
>> that.  The 22nd field of /proc/<pid>/task/<tid>/stat is the process
>> start time, not the thread creation time.
>
> I think with Linux 6.9+ we can use PIDFD_THREAD and use waitid(P_PIDFD,...).
>
> I am not sure is this would be a problem, it really depends of the
> /proc/sys/kernel/pid_max value and the system load.  I think if we
> start to see too many spurious errors we can switch to PIDFD_THREAD
> instead.
>
>> 
>> Maybe just document this in the header file as a responsibility of the
>> caller?
>
> I changed to:
>
> /* Same as support_process_state_wait, but wait for the task TID (obtained
>    with gettid) from the current process.
>    NB: this function does not guard against TID reuse (the kernel might
>    assign the TID to a different thread between the gettid and the function
>    call if the thread exits and another is created).  It is the caller's
>    responsibility to ensure the call is safe to use.  */
>
> Are you ok with this change?

Okay.

Reviewed-by: Florian Weimer <fweimer@redhat.com>

Thanks,
Florian



More information about the Libc-alpha mailing list