http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59215
--- Comment #11 from Kostya Serebryany <kcc at gcc dot gnu.org> --- > _Atomic_word __count = _M_use_count; <==== the read Interesting. We haven't seen these (we don't use this implementation of shared_ptr). I think the code is simply wrong -- it should be using __atomic_load_n instead of plain loads. You can also suppress it for now (https://code.google.com/p/thread-sanitizer/wiki/Suppressions)