condition_variable_any stuck waiting
- Dominant language
- C++
- Stars
- 214
- Forks
- 171
- PR merge metrics
- No merged PRs in 30d
Description
Boost 1.83.0
MSVC 19.38.33135.0
Occasionally I hit an issue where a `boost::condition_variable_any` gets stuck during `wait()` with a predicate, where I know that the predicate evaluates to `true` and `notify_one()` has definitely been called multiple times. All that I have to go on is a core dump which as well as showing the above shows that
* the thread running `wait()` is in `interruptible_wait`
* `total_count` is 0
So presumably `total_count` has been decremented in `wake_waiters` but `winapi::ReleaseSemaphore` hasn't resulted in the waiting thread resuming. `ReleaseSemaphore` officially can fail but `condition_variable`'s usage doesn't check the return code. Since `total_count` is zero subsequent calls to `notify` will have no effect.

The same app code runs on linux without hitting this issue.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.