Boost 1.32.0 on MSVC71 I have a test where I have one writer and five readers, each attempting the appropriate lock for their function on a read_write_mutex, and none doing it recursively. It keeps asserting on me like this: .....Assertion failed: ++loop_count == 1, file read_write_mutex.cpp, line 173 The above happens (in do_write_lock()) when I select reader_priority. Something similar happens in do_read_lock() when I select writer_priority. while (m_state == -1 || m_num_readers_to_wake == 0) { BOOST_ASSERT(++loop_count == 1); //Check for invalid loop conditions (but will also detect spurious wakeups) ++m_num_waiting_readers; m_waiting_readers.wait(l); --m_num_waiting_readers; } In release mode, it's fine, but what could be causing these "spurious wakeups"?