[PATCH v2 0/4] selftests/futex: Fix flaky futex_wait and futex_waitv tests

From: Mathieu Desnoyers

Date: Sun Nov 08 2026 - 09:50:48 EST


Hi Thomas, Peter,

The futex_wait and futex_waitv selftests assume that a waiter thread
blocks within 10ms, and that the main thread wakes it in time. Under
load, both assumptions fail. With the built-in locktorture, the tests
failed in 0.5% to 1% of the runs in 8-CPU VMs. Repeated runs of
futex_waitv also run out of System V shared memory segments.

These four patches fix both problems:

1 Let the futex_waitv() helper take no timeout.
2 Retry the wake in futex_wait until the waiter has returned, instead
of sleeping a fixed time.
3 Do the same in futex_waitv, and join its waiter.
4 Remove the shared memory segments that the tests create.

How this was developed
======================

An LLM coding assistant wrote these patches and their messages, under
my direction and review.

Changes since v1
================

- v1 was patch 2 alone. It retried the wake for up to 5s, and gave the
waiter a timeout of 10s. Both bounds were timing assumptions too. In
v2, the main thread retries until the waiter has returned from
futex_wait(), and the waiter waits without a timeout.
- New patches 1, 3 and 4.

Based on v7.4-rc1, 6628e7d4c6b2.

v1: https://lore.kernel.org/all/20261108142309.1527337-1-mathieu.desnoyers@xxxxxxxxxxxx/

Mathieu Desnoyers (4):
selftests/futex: Let futex_waitv() take no timeout
selftests/futex: Retry the wake in futex_wait instead of sleeping
selftests/futex: Retry the wake in futex_waitv instead of sleeping
selftests/futex: Remove the shared memory segments of the futex tests

.../selftests/futex/functional/futex_wait.c | 59 +++++++++++++------
.../selftests/futex/functional/futex_waitv.c | 52 +++++++++++-----
.../selftests/futex/include/futex2test.h | 14 +++--
3 files changed, 86 insertions(+), 39 deletions(-)


base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
--
2.47.3