diff --git a/drd/tests/annotate_smart_pointer.cpp b/drd/tests/annotate_smart_pointer.cpp index cf6e6ac73..862ecb0ef 100644 --- a/drd/tests/annotate_smart_pointer.cpp +++ b/drd/tests/annotate_smart_pointer.cpp @@ -317,6 +317,12 @@ int main(int argc, char** argv) p->post_increment(); for (int i = 0; i < nthreads; ++i) T[i].Create(thread_func, new smart_ptr(p)); + { + // Avoid that counter.m_mutex introduces a false ordering on the + // counter.m_count accesses. + const timespec delay = { 0, 100 * 1000 * 1000 }; + nanosleep(&delay, 0); + } p = NULL; for (int i = 0; i < nthreads; ++i) T[i].Join();