Re: [RFC PATCH 0/2] futex: how to solve the robust_list race condition?
From: Florian Weimer <hidden>
Date: 2026-02-23 11:14:16
Also in:
lkml
From: Florian Weimer <hidden>
Date: 2026-02-23 11:14:16
Also in:
lkml
* Mathieu Desnoyers:
Trying to find a backward compatible way to solve this may be tricky.
Here is one possible approach I have in mind: Introduce a new syscall,
e.g. sys_cleanup_robust_list(void *addr)
This system call would be invoked on pthread_mutex_destroy(3) of
robust mutexes, and do the following:
- Calculate the offset of @addr within its mapping,
- Iterate on all processes which map the backing store which contain
the lock address @addr.
- Iterate on each thread sibling within each of those processes,
- If the thread has a robust list, and its list_op_pending points
to the same offset within the backing store mapping, clear the
list_op_pending pointer.
The overhead would be added specifically to pthread_mutex_destroy(3),
and only for robust mutexes.Would we have to do this for pthread_mutex_destroy only, or also for pthread_join? It is defined to exit a thread with mutexes still locked, and the pthread_join call could mean that the application can determine by its own logic that the backing store can be deallocated. Thanks, Florian