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.
Boost 1.83.0
MSVC 19.38.33135.0
Occasionally I hit an issue where a
boost::condition_variable_anygets stuck duringwait()with a predicate, where I know that the predicate evaluates totrueandnotify_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 thatwait()is ininterruptible_waittotal_countis 0So presumably

total_counthas been decremented inwake_waitersbutwinapi::ReleaseSemaphorehasn't resulted in the waiting thread resuming.ReleaseSemaphoreofficially can fail butcondition_variable's usage doesn't check the return code. Sincetotal_countis zero subsequent calls tonotifywill have no effect.The same app code runs on linux without hitting this issue.