id summary reporter owner description type status milestone component version severity resolution keywords cc 5845 mutex.inl: wait_mutex (and its callers) ignore failures from WaitForSingleObject noloader@… viboes " {{{ inline int wait_mutex(void* mutex, int time) { unsigned int res = 0; res = WaitForSingleObject(mutex_cast(mutex), time); //:xxx assert(res != WAIT_FAILED && res != WAIT_ABANDONED); return res; } }}} Its callers are spread across a number of files, including mutex.cpp and recursive_mutex.cpp. Unfortunately, a common use case is shown below (taken from mutex.cpp): {{{ void timed_mutex::do_lock() { wait_mutex(m_mutex, INFINITE); } }}} Not only does do_lock() ignore the return value, its callers will proceed to use the guarded data regardless of whether the lock was actually acquired. do_trylock() does a little better, but still ignores return values such as ERROR_INVALID_HANDLE and WAIT_FAILED. {{{ bool timed_mutex::do_trylock() { return wait_mutex(m_mutex, 0) == WAIT_OBJECT_0; } }}} " Support Requests closed To Be Determined thread Boost 1.47.0 Problem invalid noloader@… viboes