| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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. |
| |
| # 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. Although init() calls local_addr_space_init(), |
| # it can sometimes be eliminated from the call stack by inlining or a tail-call |
| # optimization, so adding the suppression on both is necessary. |
| race:_ULx86_64_init |
| race:_ULx86_64_local_addr_space_init |
| |
| # libev uses some lock-free synchronization, but doesn't have TSAN annotations. |
| race:epoll_ctl |
| |
| # TSAN complains about data races on the global signals variable in |
| # ev_feed_signal and spoiled errno in ev_sighandler. Both are probably noise. |
| race:ev_sighandler |
| |
| # See https://github.com/google/glog/issues/80 for a general list of TSAN |
| # issues in glog. |
| # 1. 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 |
| # 2. LOG(FATAL) from multiple threads can also end up triggering a TSAN error. |
| # 3. g_now_entering in stacktrace_libunwind-inl.h is reset to false without |
| # a Release_Store. |
| # 4. glog's ANNOTATE_BENIGN_RACE macro doesn't do anything. |
| # 5. Mutex::is_safe_ is accessed in an unsafe way. |
| # 6. vlocal__ is access in an unsafe way at every VLOG() or VLOG_IS_ON() |
| # call-site. |
| signal:logging_fail |
| race:google::LogMessage::Init |
| race:google::GetStackTrace |
| race:google::InitVLOG3__ |
| race:glog_internal_namespace_::Mutex |
| race:vlocal__ |
| |
| # gflags variables are accessed without synchronization, but FlagSaver and other |
| # APIs acquire locks when accessing them. This should be safe on x86 for |
| # primitive flag types, but not for string flags, which is why fLS is omitted. |
| race:fLB:: |
| race:fLD:: |
| race:fLI:: |
| race:fLI64:: |
| race:fLU64:: |
| |
| # 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_ |
| |
| # Squeasel uses ctx->stop_flag to synchronize stopping. It always sets it with |
| # the context lock held, but sometimes reads it without the context lock. This |
| # should be safe on x86, but is nonetheless flagged by TSAN. |
| race:sq_stop |
| |
| # Squeasel reads and frees ctx->listening_sockets without taking any locks. This |
| # may be an unsafe race. |
| race:close_all_listening_sockets |
| |
| # ------------------------------------------------------------ |
| # Known bugs below. As these JIRAs are resolved, please remove the relevant |
| # suppression. |
| # ------------------------------------------------------------ |
| |
| # KUDU-1283: TSAN warning from consensus OpId |
| race:kudu::consensus::OpId::CopyFrom |
| |
| # KUDU-186: sketchy synchronization in catalog manager |
| race:kudu::master::CatalogManager::Shutdown |
| 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 |