blob: 9a12e69e414927073c8f4d6dfc78fb4ba0ee792c [file] [log] [blame]
# 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