id summary reporter owner description type status milestone component version severity resolution keywords cc 9708 boost::condition_variable::timed_wait unexpectedly wakes up while should wait infinite nikolay@… viboes "After upgdate from boost 1.44 to boost 1.52 following issue appears: boost::condition_variable::timed_wait(..., boost::posix_time::time_duration(boost::posix_time::pos_infin)) always immediately return false. In boost 1.44 it waits infinite for a condition notified. Simple test: {{{#!cpp int _tmain(int argc, _TCHAR* argv[]) { // test std std::condition_variable scv; std::mutex sm; bool flag = false; std::thread t([&]() { std::unique_lock l(sm); if (std::cv_status::timeout == scv.wait_for(l, std::chrono::duration>::max())) { // wait_for return timeout. it means that time period has elapsed. std::terminate(); } if (!flag) std::terminate(); // we should sleep yet }); std::this_thread::sleep_for(std::chrono::seconds(2)); { std::unique_lock l(sm); flag = true; } scv.notify_one(); t.join(); // test boost boost::condition_variable bcv; boost::mutex bm; flag = false; std::thread bt([&]() { boost::unique_lock l(bm); if (!bcv.timed_wait(l, boost::posix_time::time_duration(boost::posix_time::pos_infin))) { // timed_wait return false. it means that time period has elapsed. std::terminate(); // positive infinite should never be elapsed } if (!flag) std::terminate(); // we should sleep yet }); std::this_thread::sleep_for(std::chrono::seconds(2)); { boost::unique_lock l(bm); flag = true; } bcv.notify_one(); bt.join(); return 0; } }}} compiled: MSVS2012 UP4, Win7 Pro." Bugs closed Boost 1.56.0 thread Boost 1.52.0 Regression fixed