[PATCH v2 0/3] Fix robust mutex support detection
Adhemerval Zanella <[email protected]> Wed, 29 Jul 2026 14:46:35 -0300
| Newsgroups | gmane.comp.lib.glibc.alpha |
|---|---|
| Message-ID | <[email protected]> |
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 -- 2.53.0