> Fixes a race between parent and child threads in futex_requeue.
>
> Similar to commit fbf4dec70277 ("selftests/futex: Order calls to
> futex_lock_pi"), which fixed a flake in futex_lock_pi due to racing
> between the parent and child threads.
>
> The same issue can occur in the futex_requeue test, because it expects
> waiterfn to make progress to futex_wait before the parent starts to
> requeue. This is mitigated by the parent sleeping for WAKE_WAIT_US, but
> it still fails occasionally. This can be reproduced by adding a sleep in
> the waiterfn before futex_wait:
>
> TAP version 13
> 1..2
> not ok 1 futex_requeue simple returned: 0
> not ok 2 futex_requeue simple returned: 0
> not ok 3 futex_requeue many returned: 0
> not ok 4 futex_requeue many returned: 0
>
> This issue can be resolved by checking whether the child thread is in a
> sleeping state. This is because when the child thread goes to sleep, it
> indicates that it is waiting for the futex lock.
>
> Fixes: 7cb5dd8e2c8c ("selftests: futex: Add futex compare requeue test")
> Signed-off-by: Yuwen Chen <[email protected]>
> Co-developed-by: Edward Liaw <[email protected]>
> Signed-off-by: Edward Liaw <[email protected]>
> ---
>  .../futex/functional/futex_requeue.c          | 58 ++++++++++++++++---
>  1 file changed, 51 insertions(+), 7 deletions(-)
Reviewed-by: Licay <[email protected]>


Reply via email to