boostorg / thread

Boost.org thread module
http://boost.org/libs/thread
202 stars 163 forks source link

condition_variable_any stuck waiting #399

Open JulesRapanga opened 8 months ago

JulesRapanga commented 8 months ago

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

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. stuck_boost_cv

The same app code runs on linux without hitting this issue.