https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100806
--- Comment #2 from Thomas Rodgers <rodgertq at gcc dot gnu.org> --- I have confirmed that this is new issue, not related to PR100334. When there are waiting threads and the semaphore attempts to release one of the waiting threads, the FUTEX_WAKE syscall's return indicates that 1 thread is woken, as expected, but it is unclear to me why there is no forward progress at that point. I have replaced the algorithm with a simplified version (similar to what is in libc++) and observe the same result. Further investigation is required. I have submitted an interim patch that forces wake all which appears to address the issue.