# There are a few kinds of suppressions in this file. # 1. third party stuff we have no control over # # 2. intentional unit test errors, or stuff that is somehow a false positive # in our own code, or stuff that is so trivial it's not worth fixing # # 3. Suppressions for real chromium bugs that are not yet fixed. # These should all be in chromium's bug tracking system (but a few aren't yet). # Periodically we should sweep this file and the bug tracker clean by # running overnight and removing outdated bugs/suppressions. #----------------------------------------------------------------------- # 1. third party stuff we have no control over ############################ # 1.1 Benign races in libc # A benign race inside the implementation of internal libc mutex { Benign races in __lll_*lock_*_private ThreadSanitizer:Race fun:__lll_*lock_*_private } # Benign races below thread-safe time-conversion functions { fun:__tz* ThreadSanitizer:Race fun:__tz* } { fun:tzset* ThreadSanitizer:Race ... fun:tzset* } # Benign race in thread-safe function { fun:mkstemp* ThreadSanitizer:Race ... fun:mkstemp* } # We already ignore memory accesses inside ld # but we also need to ignore accesses below it. { fun:_dl_close ThreadSanitizer:Race ... fun:_dl_close } # fprintf is thread-safe. The benign races happen on the internal lock. { Benign race below fprintf (1) ThreadSanitizer:Race ... fun:buffered_vfprintf ... fun:fprintf } { Benign race below fprintf (2) ThreadSanitizer:Race fun:new_do_write fun:vfprintf } { fun:timegm ThreadSanitizer:Race ... fun:timegm } { fun:mktime ThreadSanitizer:Race ... fun:mktime } { Benign race in nss (PR_EnterMonitor) ThreadSanitizer:Race fun:PR_EnterMonitor } # (Looks same as the one above) { bug_84244 ThreadSanitizer:Race fun:PR_ExitMonitor ... fun:nss* } ############################ # 1.2 Benign races in ICU { Two writes, same value (ICU gGlobalMutex, gMutexesInUse) ThreadSanitizer:Race ... fun:umtx_init_46 } { Two writes, same value (ICU gHeapInUse) ThreadSanitizer:Race fun:uprv_malloc_46 } { Two writes, same value (ICU gLibCleanupFunctions[UCLN_UPLUG]) ThreadSanitizer:Race fun:ucln_registerCleanup_46 fun:uplug_init_46 fun:u_init_46 } # Reading a pointer to a mutex being initialized in a concurrent thread. { A benign race in umtx_lock_46 ThreadSanitizer:Race fun:umtx_lock_46 } ############################ # 1.3 Benign races in SQLLite # TODO(timurrr|oshima): following four suppressions could be obsolete. { Two writes, same value (SQLLite pthreadMutexAlloc) ThreadSanitizer:Race ... fun:pthreadMutexAlloc fun:sqlite3MutexAlloc } { Two writes, same value 2 (SQLLite pthreadMutexAlloc) ThreadSanitizer:Race fun:pthreadMutexAlloc ... fun:openDatabase } { Two writes, same value (under sqlite3Malloc) ThreadSanitizer:Race ... fun:sqlite3Malloc* } { Two writes, same value (sqlite3_initialize) ThreadSanitizer:Race fun:sqlite3_initialize fun:openDatabase } { bug_84094_a (Could be benign. See bug for details) ThreadSanitizer:Race ... fun:pcache1Fetch fun:sqlite3PcacheFetch } { bug_84094_b (Could be benign. See bug for details) ThreadSanitizer:Race fun:sqlite3StatusSet fun:pcache1Alloc } { bug_84094_c (Could be benign. See bug for details) ThreadSanitizer:Race ... fun:pcache1Unpin fun:pcacheUnpin fun:sqlite3PcacheMakeClean fun:sqlite3PcacheCleanAll } ############################ # 1.4 Real races in third_party { Nvidia GL driver destroys an invalid lock ThreadSanitizer:InvalidLock fun:pthread_mutex_destroy obj:*nvidia*/libGL.so.* } # http://code.google.com/p/v8/issues/detail?id=361 { V8: race on Locker::active_ ThreadSanitizer:Race fun:v8::Locker::* } { bug_23244 (libevent) ThreadSanitizer:Race fun:event_* fun:event_* } { bug_28396 (libevent) (1) ThreadSanitizer:Race fun:detect_monotonic fun:event_base_new } { bug_28396 (libevent) (2) ThreadSanitizer:Race fun:gettime fun:event_base_loop } { bug_28765 (tcmalloc) ThreadSanitizer:Race ... fun:*tcmalloc*ThreadCache*DeleteCache* } { bug_70938 ThreadSanitizer:Race ... obj:*libdbus* } { bug_84467 (Could be benign. See bug for details) ThreadSanitizer:Race fun:unixTempFileDir } { bug_84726_a ThreadSanitizer:Race fun:qsort_r fun:qsort fun:_xdg_mime_alias_read_from_file } { bug_84726_b ThreadSanitizer:Race fun:qsort_r fun:qsort fun:_cairo_bentley_ottmann_tessellate_polygon } # 2. intentional unit test errors, or stuff that is somehow a false positive ############################ # 2.1 Data races in tests { bug_30582 ThreadSanitizer:Race fun:*LongCallbackD* fun:*WorkerThreadTickerTest_LongCallback_Test*TestBody* } { bug_61731 ThreadSanitizer:Race fun:*Log* ... fun:*Worker* ... obj:*ipc_tests } { bug_68481 [test-only race on bool] ThreadSanitizer:Race ... fun:tracked_objects::ThreadData::ShutdownSingleThreadedCleanup fun:tracked_objects::TrackedObjectsTest_MinimalStartupShutdown_Test::* } # TODO(timurrrr): bug item { Data race on bool in AssertReporter [test-only] ThreadSanitizer:Race ... fun:*AssertReporter*warn* } # TODO(timurrrr): bug item { Data race on WatchdogCounter [test-only] ThreadSanitizer:Race ... fun:*WatchdogCounter*larm* } # TODO(timurrrr): bug item { Data race on counter in WorkQueue [test-only] ThreadSanitizer:Race ... fun:*WorkQueue* } # TODO(timurrrr): bug item { Data race on vfptr in base/watchdog_unittest ThreadSanitizer:Race ... fun:*WatchdogTest_*arm*Test_Test*TestBody* } # TODO(timurrrr): bug item { Data race on bool in chrome/browser/net/url_fetcher_unittest (1) ThreadSanitizer:Race fun:*URLFetcherCancelTest*TestContextReleased* } { Data race on bool in chrome/browser/net/url_fetcher_unittest (2) ThreadSanitizer:Race fun:*CancelTestURLRequestContext*CancelTestURLRequestContext* } { ThreadSanitizer sanity test (ToolsSanityTest.DataRace) ThreadSanitizer:Race fun:*TOOLS_SANITY_TEST_CONCURRENT_THREAD::ThreadMain } { Benign race (or even a false positive) on atomics in ThreadCollisionWarner ThreadSanitizer:Race fun:base::subtle::NoBarrier_Store fun:base::ThreadCollisionWarner::Leave } { bug_100026 ThreadSanitizer:Race ... fun:std::* ... fun:logging::LogMessage::*LogMessage fun:base::PlatformThread::SetThreadPriority fun:base::SimpleThread::SetThreadPriority fun:AudioDevice::Run } ############################ # 2.2 Benign races in Chromium { bug_61179 [benign race on tracked_objects::Births] ThreadSanitizer:Race fun:tracked_objects::Births::*Birth* } { bug_62694 [benign races in Histogram in CookieMonster] ThreadSanitizer:Race ... fun:base::Histogram::* fun:net::CookieMonster::* } { bug_64185a [probably-benign races in Histogram in skia::ImageOperations] ThreadSanitizer:Race ... fun:base::Histogram::* fun:skia::ImageOperations::* } { bug_64185b [probably-benign races in Histogram in skia::ImageOperations] ThreadSanitizer:Race ... fun:base::Histogram::* fun:HistogramSynchronizer::DeserializeHistogramList* } { bug_104776 Benign race to initialize pointer with the same value again. ThreadSanitizer:Race fun:base::StatisticsRecorder::FindHistogram fun:base::*Histogram::FactoryGet } # 3. Suppressions for real chromium bugs that are not yet fixed. ############################ # Real races in Chromium { bug_23433 ThreadSanitizer:Race fun:*logging*SetMinLogLevel* } { bug_24419 ThreadSanitizer:Race fun:*BrowserProcessImpl*nspector*iles* } { bug_37496 ThreadSanitizer:Race ... fun:*browser_sync*SyncShareIntercept*Observe* } { bug_41314 ThreadSanitizer:Race ... fun:base::LaunchApp* fun:ChildProcessLauncher::Context::LaunchInternal* } { bug_46642a ThreadSanitizer:Race fun:*media*Pipeline*InitializeTask* } { bug_46642b ThreadSanitizer:Race fun:*media*Pipeline*GetCurrentTime* } { bug_57266a ThreadSanitizer:Race ... fun:*vp8*_* } { bug_57266b ThreadSanitizer:Race ... obj:*libffmpegsumo.* fun:ThreadSanitizerStartThread } { bug_57266c ThreadSanitizer:Race fun:thread_encoding_proc } { bug_64075a ThreadSanitizer:Race fun:disk_cache::EntryImpl::GetDataSize* fun:net::HttpCache::Transaction::* } { bug_64075b ThreadSanitizer:Race fun:disk_cache::EntryImpl::UpdateSize* ... fun:disk_cache::EntryImpl::WriteDataImpl* } { bug_67957 ThreadSanitizer:Race fun:Replace_memcpy fun:memcpy fun:Serialize fun:UserScriptMaster::ScriptReloader::RunLoad } { bug_72548 ThreadSanitizer:Race ... fun:JSC::Yarr::Interpreter::*Disjunction* fun:JSC::Yarr::Interpreter::interpret* fun:JSC::Yarr::interpret* } { bug_86916 ThreadSanitizer:Race fun:loopfilter_frame fun:loopfilter_thread } { bug_89141 ThreadSanitizer:Race fun:base::Thread::message_loop fun:content::BrowserThread::IsMessageLoopValid fun:ThreadWatcherList::StartWatching fun:ThreadWatcherList::InitializeAndStartWatching } { bug_93932_a ThreadSanitizer:Race ... fun:avcodec_close ... fun:media::FFmpegVideoDecoder::* ... fun:media::FFmpegVideoDecode*Test::* } { bug_93932_b ThreadSanitizer:Race ... fun:ff_thread_decode_frame fun:avcodec_decode_video2 ... fun:media::FFmpegVideoDecoder::Decode* } { bug_93932_c ThreadSanitizer:Race fun:Replace_memcpy fun:memcpy fun:media::CopyPlane ... fun:media::FFmpegVideoDecoder::Decode* } { bug_93932_d ThreadSanitizer:Race fun:frame_worker_thread } { bug_93932_e ThreadSanitizer:Race fun:Replace_memcpy fun:memcpy fun:ff_thread_decode_frame ... fun:media::FFmpegVideoDecoder::Decode* } { bug_93932_f ThreadSanitizer:Race fun:update_context_from_thread fun:ff_thread_flush ... fun:media::FFmpegVideoDecoder::Flush } { bug_93932_g ThreadSanitizer:Race fun:frame_thread_free ... fun:avcodec_close ... fun:media::FFmpegVideoDecoder::ReleaseFFmpegResources } { bug_95509 ThreadSanitizer:Race ... fun:AudioDevice::ShutDownAudioThread } { bug_95509_b ThreadSanitizer:Race fun:base::SyncSocket::Receive fun:AudioDevice::Run fun:base::DelegateSimpleThread::Run fun:base::SimpleThread::ThreadMain fun:base::::ThreadFunc } { bug_100020 ThreadSanitizer:Race fun:linked_ptr_internal::join fun:linked_ptr::copy ... fun:HostContentSettingsMap::GetDefaultContentSetting } { bug_102327_a ThreadSanitizer:Race fun:tracked_objects::ThreadData::Initialize fun:tracked_objects::ThreadData::InitializeThreadContext fun:base::Thread::ThreadMain fun:base::::ThreadFunc } { bug_102327_b ThreadSanitizer:Race ... fun:tracked_objects::ThreadData::TallyABirthIfActive fun:base::PosixDynamicThreadPool::PendingTask::PendingTask fun:base::PosixDynamicThreadPool::WaitForTask fun:base::::WorkerThread::ThreadMain fun:base::::ThreadFunc } { bug_102327_c ThreadSanitizer:Race fun:tracked_objects::ThreadData::tracking_status } { bug_103711a ThreadSanitizer:Race fun:webrtc::Trace::SetLevelFilter } { bug_103711b ThreadSanitizer:Race fun:webrtc::TraceImpl::TraceCheck } { bug_103711c ThreadSanitizer:Race fun:webrtc::ThreadPosix::* } { bug_103711d ThreadSanitizer:Race fun:webrtc::FileWrapper*::* ... fun:webrtc::TraceImpl::StaticInstance fun:webrtc::Trace::ReturnTrace fun:webrtc::voe::SharedData::~SharedData fun:webrtc::VoiceEngineImpl::~VoiceEngineImpl ... fun:webrtc::VoiceEngine::Delete fun:WebRTCAutoDelete::reset ... fun:WebRTCAudioDeviceTest_Construct_Test::TestBody } { bug_103711e ThreadSanitizer:Race ... fun:WebRTCAudioDeviceTest::OnMessageReceived ... fun:IPC::Channel::ChannelImpl::ProcessIncomingMessages fun:IPC::Channel::ChannelImpl::OnFileCanReadWithoutBlocking fun:base::MessagePumpLibevent::FileDescriptorWatcher::OnFileCanReadWithoutBlocking fun:base::MessagePumpLibevent::OnLibeventNotification fun:event_process_active fun:event_base_loop } { bug_103711f ThreadSanitizer:Race fun:webrtc::TracePosix::AddTime fun:webrtc::TraceImpl::AddImpl fun:webrtc::Trace::Add fun:webrtc::ThreadPosix::Run } { bug_103711g ThreadSanitizer:Race fun:WebRTCAudioDeviceTest::SetUp } { bug_103711h ThreadSanitizer:Race fun:webrtc::EventWrapper::~EventWrapper fun:webrtc::EventPosix::~EventPosix fun:webrtc::ProcessThreadImpl::~ProcessThreadImpl fun:webrtc::ProcessThread::DestroyProcessThread fun:webrtc::voe::SharedData::~SharedData fun:webrtc::VoiceEngineImpl::~VoiceEngineImpl fun:webrtc::VoiceEngine::Delete fun:WebRTCAutoDelete::reset fun:WebRTCAutoDelete::~WebRTCAutoDelete fun:WebRTCAudioDeviceTest_Construct_Test::TestBody } { bug_104769 ThreadSanitizer:Race fun:timeout_correct fun:event_base_loop fun:base::MessagePumpLibevent::Run fun:MessageLoop::RunInternal fun:MessageLoop::RunHandler fun:MessageLoop::Run } { bug_104776_maybe_benign ThreadSanitizer:Race fun:base::StatisticsRecorder::StatisticsRecorder fun:BrowserMain fun:::RunNamedProcessTypeMain fun:content::ContentMain fun:ChromeMain fun:main } { bug_106196 ThreadSanitizer:Race fun:tracked_objects::ThreadData::InitializeAndSetTrackingStatus fun:ChildThread::OnSetProfilerStatus fun:DispatchToMethod } { bug_107181a ThreadSanitizer:Race ... fun:media::AudioRendererBase::SetPlaybackRate fun:AudioRendererImpl::SetPlaybackRate fun:media::CompositeFilter::SetPlaybackRate fun:media::Pipeline::PlaybackRateChangedTask ... fun:base::internal::RunnableAdapter::Run } { bug_107181b ThreadSanitizer:Race fun:media::AudioRendererAlgorithmBase::playback_rate fun:media::AudioRendererBase::GetPlaybackRate fun:AudioRendererImpl::Render fun:AudioDevice::FireRenderCallback fun:AudioDevice::Run } { bug_107903 ThreadSanitizer:Race ... fun:TestProfileSyncService::~TestProfileSyncService fun:scoped_ptr::reset fun:ProfileSyncServiceAutofillTest::TearDown } { bug_108408 ThreadSanitizer:Race fun:base::subtle::RefCountedBase::AddRef fun:base::RefCounted::AddRef fun:net::HttpCache::Transaction::DoCacheWriteData fun:net::HttpCache::Transaction::DoLoop fun:net::HttpCache::Transaction::ReadFromNetwork fun:net::HttpCache::Transaction::Read fun:net::URLRequestHttpJob::ReadRawData fun:net::URLRequestJob::ReadRawDataHelper fun:net::URLRequestJob::Read fun:net::URLRequest::Read fun:ResourceDispatcherHost::Read fun:ResourceDispatcherHost::StartReading fun:ResourceDispatcherHost::ResumeRequest fun:base::internal::RunnableAdapter::Run } { bug_108411 ThreadSanitizer:Race ... fun:pa_rtpoll_run }