[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