[PATCH v2 0/3] Fix robust mutex support detection
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Thu Sep 10 18:14:38 GMT 2026
Ping.
On 29/07/26 14:46, Adhemerval Zanella wrote:
> An issue reported by qemu [1] states that programs using process-shared
> robust mutexes fail on qemu-user for riscv64 while succeeding for
> x86_64/aarch64. However, qemu-user does not implement set_robust_list
> for any architecture in user-mode, meaning that its usage should fail
> for all architectures.
>
> While checking the robust mutex support, I also discovered that we can
> move the kernel initialization only when process-shared robust mutexes
> are used, instead of on every process/thread initialization.
>
> Changes from v1:
>
> * Fixed the userspace robust list cleanup for PI mutextes.
> * tst-mutexpi10 now skips on ENOTSUP regardless of the robust
> attribute.
> * __nptl_set_robust_list_avail is read and written with relaxed
> atomics, and robust_list_setup returns early once set_robust_list is
> known not to work.
>
> [1] https://gitlab.com/qemu-project/qemu/-/issues/3044
>
> Adhemerval Zanella (3):
> support: Add support_process_shared_robust_mutex
> nptl: Do not always assume set_robust_list availability (BZ 33225)
> nptl: Only initialize robust list at mutex usage
>
> nptl/Makefile | 2 +
> nptl/Versions | 1 -
> nptl/allocatestack.c | 9 +-
> nptl/descr.h | 46 ++++++++++
> nptl/nptl_robust_setup.c | 38 ++++++++
> nptl/pthread_create.c | 67 ++++++++------
> nptl/pthread_mutex_init.c | 5 +-
> nptl/pthread_mutex_lock.c | 2 +
> nptl/pthread_mutex_timedlock.c | 2 +
> nptl/pthread_mutex_trylock.c | 2 +
> nptl/tst-mutexpi10.c | 7 +-
> nptl/tst-robust-fork.c | 21 +++++
> nptl/tst-robust-pshared.c | 91 +++++++++++++++++++
> support/Makefile | 1 +
> support/support_mutex_robust.c | 34 +++++++
> support/xthread.h | 3 +
> sysdeps/nptl/_Fork.c | 24 ++---
> sysdeps/nptl/dl-tls_init_tp.c | 23 +----
> sysdeps/nptl/pthreadP.h | 7 --
> sysdeps/pthread/tst-robust8.c | 6 ++
> sysdeps/unix/sysv/linux/arm/kernel-features.h | 7 --
> .../unix/sysv/linux/hppa/kernel-features.h | 3 -
> sysdeps/unix/sysv/linux/kernel-features.h | 5 -
> .../unix/sysv/linux/m68k/kernel-features.h | 5 -
> .../unix/sysv/linux/mips/kernel-features.h | 6 --
> .../unix/sysv/linux/riscv/kernel-features.h | 5 -
> .../unix/sysv/linux/sparc/kernel-features.h | 6 --
> 27 files changed, 307 insertions(+), 121 deletions(-)
> create mode 100644 nptl/nptl_robust_setup.c
> create mode 100644 nptl/tst-robust-pshared.c
> create mode 100644 support/support_mutex_robust.c
>
More information about the Libc-alpha
mailing list