I noticed that a lot of our tests have gotten flaky with a TSAN race
reported around SSL initialization. After digging into a bit, I found that
our version of libcxx has a bug in std::once where it's using a relaxed
load instead of an acquire load to check the flag of whether it has run yet.

I went to go report this upstream and discovered it's actually already
fixed:
https://github.com/llvm-mirror/libcxx/commit/4dbd4fcf8626453949625bf36976e668094cfbb1

I'd still like to resolve the race, though. A couple options:
1) apply this patch to our libcxx
2) use GoogleOnce instead of std::call_once
3) suppress it until we upgrade to llvm 4.0 with the newer libcxx, which
should likely be released in a few weeks

Any opinions?
-Todd
-- 
Todd Lipcon
Software Engineer, Cloudera

Reply via email to