| # Copyright 2014 Cloudera, Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| race:_dl_deallocate_tls |
| race:kudu::tablet::ScopedRowLock::Release |
| |
| # Even with newer versions of libstdc++, there appear to be some races |
| # which are false positives with the stock version. Rather than rebuilding |
| # libstdc++ with TSAN, we just suppress them here. |
| race:~basic_string |
| race:std::tr1::_Sp_counted_base |
| race:std::string::_Rep::_M_is_shared |
| race:std::string::_Rep::_M_refcopy |
| race:std::string::_Rep::_M_grab |
| race:std::string::_Rep::_M_dispose |
| race:std::string::_Rep::_M_set_length_and_sharable |
| |
| # Protobuf's implementation of GoogleOnce doesn't properly annotate itself |
| race:google::protobuf::GoogleOnceInitImpl |
| race:google::protobuf::Message::GetReflection |
| race:*::protobuf_AssignDescriptorsOnce |
| |
| # libunwind uses some double-checked locking which isn't perfectly safe. |
| # Reported at http://savannah.nongnu.org/bugs/index.php?42677 |
| # |
| # With TSAN in clang 3.5, it's the init() function that's flagged as a data |
| # race (not local_addr_space_init()), due to the former calling sigfillset() |
| # on an unprotected global variable. Given that init() invokes |
| # local_addr_space_init(), suppressing init() suppresses both races. |
| race:_ULx86_64_init |
| |
| # libev uses some lock-free synchronization, but doesn't have TSAN annotations. |
| # See http://lists.schmorp.de/pipermail/libev/2013q2/002178.html or KUDU-366 |
| # for examples. |
| race:evpipe_write |
| race:evpipe_init |
| |
| # concurrent btree uses optimistic concurrency, needs to be annotated a bunch |
| # more before it would pass. Relatively confident that it is correct based on |
| # a lot of stress testing. |
| race:concurrent_btree.h |
| |
| # We're currently a little lax on using atomic instructions for mutations where |
| # we might need to. There are possible bugs lurking here, though likely we are |
| # hiding behind x86 TSO for now. |
| race:kudu::tablet::ApplyMutationsAndGenerateUndos |
| race:kudu::tablet::MemRowSet::Iterator::ApplyMutationsToProjectedRow |
| race:kudu::tablet::MemRowSet::Iterator::FetchRows |
| race:kudu::tablet::Mutation::* |
| race:kudu::RowChangeListDecoder::Init |
| |
| # GLog's fatal signal handler isn't signal-safe -- it allocates memory. |
| # This isn't great, but nothing we can do about it. See |
| # https://code.google.com/p/google-glog/issues/detail?id=191 |
| signal:logging_fail |
| |
| # This method in Boost's UUID library operates on static state with impunity, |
| # triggering (harmless) data races in TSAN when boost::uuids::random_generator |
| # instances are created across threads (see kudu::ObjectIdGenerator). |
| race:boost::uuids::detail::seed_rng::sha1_random_digest_ |
| |
| # ------------------------------------------------------------ |
| # Known bugs below. As these JIRAs are resolved, please remove the relevant |
| # suppression. |
| # ------------------------------------------------------------ |
| |
| # KUDU-186: sketchy synchronization in catalog manager |
| race:kudu::master::CatalogManagerBgTasks::Shutdown |
| race:kudu::master::CatalogManager::~CatalogManager |
| |
| # KUDU-189: unsynchronized access to 'state_' in DeferredCallback |
| race:kudu::master::AsyncTabletRequestTask::DeferredCallback |
| |
| # KUDU-574: raft_consensus_quorum-test race on LocalTestPeerProxy destruction |
| race:kudu::consensus::LocalTestPeerProxy::~LocalTestPeerProxy |
| |
| # KUDU-569: unsynchronized access to 'state_', 'acceptor_pools_', in |
| # GetBoundAddresses() |
| race:kudu::Webserver::GetBoundAddresses |
| race:kudu::RpcServer::GetBoundAddresses |