id summary reporter owner description type status milestone component version severity resolution keywords cc 1905 shared_mutex::timed_lock can leave mutex thinking there's a waiting writer Anthony Williams Anthony Williams "I'm experiencing a deadlock in the following code. After an timed out call to boost::shared_mutex::timed_lock(), boost::mutex::state.exclusive_waiting_blocked equals 1, which makes further attempts to shared_lock the mutex block indefinitely. Is this a bug, or are my expectations wrong? Thanks, Mark {{{ #include #include #include using namespace std; boost::shared_mutex mutex; void thread() { boost::system_time timeout=boost::get_system_time() + boost::posix_time::milliseconds(500); if (mutex.timed_lock(timeout)) { mutex.unlock(); } else { cout << ""thread1: failed to obtain exclusive lock"" << endl; // now mutex.state.exclusive_waiting_blocked == 1; cout << ""thread1: attempting to obtain exclusive lock"" << endl; mutex.lock_shared(); //never get to here cout << ""thread2: obtained shared lock"" << endl; mutex.unlock_shared(); } } int main(int argc, char* argv[]) { mutex.lock_shared(); boost::thread my_thread(&thread); my_thread.join(); mutex.unlock_shared(); return 0; } }}} " Bugs closed Boost 1.36.0 thread Boost 1.35.0 Problem fixed