<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/76807>76807</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [libc++] Hangs in std::condition_variable_any when used with std::stop_token
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          alexbatashev
      </td>
    </tr>
</table>

<pre>
    The following piece of code appears to work reliably and correctly (or at least the way that I expect it to work) with `libstdc++`, but sporadically hangs with the latest `libc++`:

```c++
#include <thread>
#include <stop_token>
#include <mutex>
#include <condition_variable>
#include <iostream>

class thread {
public:
    thread() {
 thread_ = std::jthread([this](std::stop_token st) {
            while (!st.stop_requested()) {
                std::unique_lock lock{m_};
 cv_.wait(lock, st, []{ return false; });
            }
 });
    }
private:
    std::mutex m_;
 std::condition_variable_any cv_;
    std::jthread thread_;
};

int main() {
    thread t;
    #ifdef _LIBCPP_VERSION
    std::cout << "libc++\n";
    #else
 std::cout << "libstdc++\n";
    #endif
}
```

Results with `libstdc++` and Clang 18. The process exits almost immediately with exit code 0.
![image](https://github.com/llvm/llvm-project/assets/829678/cd3f9a87-87f7-40de-a81d-40c4a55f7d9e)

`libc++` with Clang 18 commit d933b88b71b00461815667d7cd0bb2fecd8606db. Sometimes it works fine, but sometimes it would hang forever until the process is killed from outside.
![image](https://github.com/llvm/llvm-project/assets/829678/ff1e03b8-f3d4-4084-bc76-61ca4fc2fc17)

I also tested with commit 7e186d366d6c7def0543acc255931f617e76dff0 with the same result.

https://godbolt.org/z/hjTheTnon

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0VkuP2zYQ_jX0ZWCDIvU8-BB7Y3SBog2SoFeDIocWs5ToiKP1ur--kLx-bXZR9FDBoAHNg_N9w_lEFaPbdYhLlq1Y9jBTAzWhXyqPL7UiFRt8ntXBHJffGwQbvA8H1-1g71AjBAs6GAS136PqI1CAQ-ifoEfvVO2PoDoDOvQ9avJHYKIMPSgCjyoSUINwUEegRhE8Ar7sURM4OqdhooKDowZYzr2rIxnNxGr85ZyJNdQDQdyHXhmnlfdHaFS3i6eQMbdXhJFeo29C5SfGHxg_rzk__c4ep7dCuk77wSAwuaamR2WY_PyeMVLYbyk8YfeBQzsQvnxg06Ezjlzots-qHznDDxxdiNSjaq_madVexQin-oAVr9Xvh9o7fQEKAK8uTJQjqxfH19dbYPIBIpkxRH76cXXOVtS4yLIHJsqL_YoYIt3nu3kOjfMI045JpMUU1OPPASPhayEfxo7PZbuhcz8H3Pqgn2BcWLFqt6x4YPIcqZ-3i4NyxEQ5OYj1VNgaToeaFSvokYa-A6t8RCZXMMaL6pri5hlNp5fvOF2M-949K8I7ki8lTy2HdnsNvZh-7fhWdccRwt0-b5tx7tTF6ZaA0-o6gla57pcmX9oPdI9FSGcNWtj-_rhaf_my_evz12-Pf_7xThU6DDQeQybXwIS4Gahs3TEh3ubFkeZfkL_NcTPSH6TpjLNXvPcDe4v9K8bBU_xQLyYlWnvV7SApFzCK2b4PGmMEfHEUQfk2RALXtmicIvTHU67RehI5vjjPZcKylWvVDk9z0RDt4whRbJjY7Bw1Q73QoWVi4_3z-W--78MP1MTERsWIFJnYlKLKi5KJjTbSVqos5mVhi3nKDc5VmZh5ynWqsswWpsLxJN7r1p2snco9QwQd2tYRmErKuizrIqk5T_OkTLI8L0yhDa9rYVGbMue5qRfwLbRIrsU4KvAovxGs6_AitPfmwZtJbsGGHp-xh6Ej5yfZPfPqIjw579GA7UMLYaDoDP6PJFqbIJd1ObfSpPOUl-m81kU-zxOtUquF1UnxhsRHUD4GoEmTTgy-EldgUuZG5rnJdWHQ8iyVSmuRZZVMbJ4UWOTGWn793ETVIvTTOVzc7vEGWTB18LQI_Y6Jzd9MbJof3xv83oXu5D4zS2kqWakZLpOCp6LkScZnzbJSiS1rndsqxzSrEpvmgmtEq2wqlalmbim4SHnCZZLwKuELrEqdyyyVZVmnlRQs5dgq5xcjlWMFMxfjgMsiL3kx86pGH6d7wN2ACzHeC_rlxH897CJLuXeR4jUNOfLTDeJWFx7gt-l77Lp_Fb9Dgx0M8dyCdz40s6H3y_98RiZ44xmZEP4TAAD__9HOpHo">