# 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
}

# See crbug.com/84244 for benign races in nss.
{
  Benign race in nss (PR_EnterMonitor)
  ThreadSanitizer:Race
  fun:PR_EnterMonitor
}
{
  Benign race in nss (PR_ExitMonitor)
  ThreadSanitizer:Race
  fun:PR_ExitMonitor
}

{
  False positive on strncasecmp OOB read
  ThreadSanitizer:Race
  fun:__strncasecmp_l_ssse3
  fun:base::strncasecmp
}
{
  False positive on strcasecmp OOB read
  ThreadSanitizer:Race
  fun:__strcasecmp_l_ssse3
  fun:base::strcasecmp
}

{
  Benign race in get_nprocs, uses barriers
  ThreadSanitizer:Race
  fun:get_nprocs
}

{
  False positives, glibc just uses internal atomics
  ThreadSanitizer:Race
  ...
  fun:getaddrinfo
}

############################
# 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
}

# http://bugs.icu-project.org/trac/ticket/10295
{
  Two writes, same value (ICU gLibCleanupFunctions[*])
  ThreadSanitizer:Race
  fun:ucln_registerCleanup_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
}

{
  Two writes, same value (under sqlite3Malloc)
  ThreadSanitizer:Race
  ...
  fun:sqlite3Malloc*
}

{
  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_84467a (Could be benign. See bug for details)
  ThreadSanitizer:Race
  fun:unixTempFileDir
}

{
  bug_84467b
  ThreadSanitizer:Race
  fun:getenv
  fun:unixTempFileDir
}

{
  bug_84467c
  ThreadSanitizer:Race
  fun:__add_to_environ
  fun:::EnvironmentImpl::SetVarImpl
  fun:::EnvironmentImpl::SetVar
}

{
  bug_177061
  ThreadSanitizer:Race
  ...
  fun:*cairo*
}

# 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
}

############################
# 2.2 Benign races in Chromium
{
  bug_61179 [benign race on tracked_objects::Births]
  ThreadSanitizer:Race
  fun:tracked_objects::Births::*Birth*
}

# 3. Suppressions for real chromium bugs that are not yet fixed.
############################
# Real races in Chromium
{
  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_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_66835b
  ThreadSanitizer:Race
  fun:__add_to_environ
  fun:g_setenv
  ...
  fun:giop_init
  fun:CORBA_ORB_init
  fun:gconf_orb_get
  ...
  fun:gconf_activate_server
  ...
  fun:gconf_engine_get_fuller
  fun:gconf_engine_get_entry
  ...
  fun:GConfTitlebarListener::GConfTitlebarListener
  fun:DefaultSingletonTraits::New
  fun:Singleton::get
  fun:GConfTitlebarListener::GetInstance
  fun:BrowserTitlebar::Init
  fun:BrowserWindowGtk::InitWidgets
  fun:BrowserWindowGtk::Init
  fun:BrowserWindow::CreateBrowserWindow
  fun:::CreateBrowserWindow
  fun:Browser::Browser
  fun:StartupBrowserCreatorImpl::OpenTabsInBrowser
  fun:StartupBrowserCreatorImpl::ProcessSpecifiedURLs
  fun:StartupBrowserCreatorImpl::ProcessStartupURLs
  fun:StartupBrowserCreatorImpl::ProcessLaunchURLs
  fun:StartupBrowserCreatorImpl::Launch
}

{
  bug_67957
  ThreadSanitizer:Race
  fun:Replace_memcpy
  fun:memcpy
  fun:extensions::Serialize
  fun:extensions::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:ff_thread_flush
  ...
  fun:media::FFmpegVideoDecoder::Reset
}
{
  bug_93932_g
  ThreadSanitizer:Race
  ...
  fun:ff_frame_thread_free
  ...
  fun:avcodec_close
}
{
  bug_93932_h
  ThreadSanitizer:Race
  ...
  fun:render_slice
  fun:vp3_decode_frame
  fun:frame_worker_thread
}
{
  bug_93932_i
  ThreadSanitizer:Race
  ...
  fun:ff_thread_flush
  ...
  fun:media::FFmpegVideoDecoder::DoReset
}
{
  bug_93932_j
  ThreadSanitizer:Race
  ...
  fun:base::MD5Update
  fun:media::VideoFrame::HashFrameForTesting
  fun:media::PipelineIntegrationTestBase::OnVideoRendererPaint
}
{
  bug_93932_k
  ThreadSanitizer:Race
  ...
  fun:media::FFmpegVideoDecoder::Decode
  fun:media::FFmpegVideoDecoder::DecodeBuffer
  fun:media::FFmpegVideoDecoder::DoDecryptOrDecodeBuffer
  fun:media::FFmpegVideoDecoder::DoDecryptOrDecodeBuffer
}
{
  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::TrackingStatus
}
{
  bug_102327_d
  ThreadSanitizer:Race
  fun:tracked_objects::ThreadData::SnapshotMaps
}
{
  bug_102327_e
  ThreadSanitizer:Race
  fun:tracked_objects::Births::birth_count
  fun:tracked_objects::ThreadData::SnapshotExecutedTasks
}
{
  bug_102327_f
  ThreadSanitizer:Race
  fun:tracked_objects::DeathData::RecordDeath
}
{
  bug_104769
  ThreadSanitizer:Race
  fun:timeout_correct
  fun:event_base_loop
  fun:base::MessagePumpLibevent::Run
  fun:base::MessageLoop::RunHandler
}
{
  bug_104776_maybe_benign
  ThreadSanitizer:Race
  fun:base::StatisticsRecorder::StatisticsRecorder
  fun:::BrowserMainRunnerImpl::Initialize
  fun:BrowserMain
  fun:::RunNamedProcessTypeMain
  fun:::ContentMainRunnerImpl::Run
  fun:content::ContentMain
  fun:ChromeMain
  fun:main
}
{
  bug_106196
  ThreadSanitizer:Race
  fun:tracked_objects::ThreadData::InitializeAndSetTrackingStatus
  fun:*ChildThread::OnSetProfilerStatus
  fun:DispatchToMethod
}
{
  bug_107903_a
  ThreadSanitizer:Race
  ...
  fun:TestProfileSyncService::~TestProfileSyncService
  fun:scoped_ptr::reset
  fun:ProfileSyncServiceAutofillTest::TearDown
}
{
  bug_107903_b
  ThreadSanitizer:Race
  ...
  fun:syncer::SyncManager::SyncInternal::ShutdownOnSyncThread
  fun:syncer::SyncManager::ShutdownOnSyncThread
  fun:browser_sync::SyncBackendHost::Core::DoShutdown
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_107903_c
  ThreadSanitizer:Race
  fun:syncable::DirectoryChangeDelegate::~DirectoryChangeDelegate
  fun:syncer::SyncManager::SyncInternal::~SyncInternal
  fun:syncer::SyncManager::~SyncManager
  fun:scoped_ptr::reset
  fun:browser_sync::SyncBackendHost::Core::DoShutdown
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_108539
  ThreadSanitizer:Race
  fun:tracked_objects::ThreadData::InitializeAndSetTrackingStatus
  fun:tracked_objects::ThreadData::ShutdownSingleThreadedCleanup
  fun:tracked_objects::TrackedObjectsTest::TrackedObjectsTest
  fun:tracked_objects::TrackedObjectsTest_MinimalStartupShutdown_Test::TrackedObjectsTest_MinimalStartupShutdown_Test
}
{
  bug_112419
  ThreadSanitizer:Race
  ...
  fun:::OCSPTrySendAndReceive
  fun:pkix_pl_Pk11CertStore_GetCRL
  fun:pkix_CrlChecker_CheckExternal
  fun:PKIX_RevocationChecker_Check
  fun:pkix_CheckChain
  fun:pkix_Build_ValidateEntireChain
  fun:pkix_BuildForwardDepthFirstSearch
  fun:pkix_Build_InitiateBuildChain
  fun:PKIX_BuildChain
  fun:CERT_PKIXVerifyCert
  fun:net::::PKIXVerifyCert
  fun:net::X509Certificate::VerifyInternal
  fun:net::X509Certificate::Verify
  fun:net::CertVerifierWorker::Run
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_113717
  ThreadSanitizer:Race
  fun:std::swap
  fun:content::RenderThreadImpl::Send
  fun:content::RenderWidget::Send
  fun:content::RenderViewImpl::Send
  fun:content::RenderWidget::DoDeferredUpdate
  fun:content::RenderWidget::DoDeferredUpdateAndSendInputAck
  fun:content::RenderWidget::InvalidationCallback
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_115540
  ThreadSanitizer:Race
  fun:base::Thread::message_loop
  fun:content::BrowserThreadImpl::PostTaskHelper
  fun:content::BrowserThread::PostTask
  fun:AudioRendererHost::OnCreated
  fun:media::AudioOutputController::DoCreate
}
{
  bug_116559
  ThreadSanitizer:Race
  fun:logging::::LoggingTest_Dcheck_Test::TestBody
  fun:testing::internal::HandleSehExceptionsInMethodIfSupported
}
{
  bug_118319_a
  ThreadSanitizer:Race
  fun:content::BrowserThreadImpl::~BrowserThreadImpl
  fun:content::BrowserProcessSubThread::~BrowserProcessSubThread
  fun:scoped_ptr::reset
  fun:content::BrowserMainLoop::ShutdownThreadsAndCleanUp
  fun:::BrowserMainRunnerImpl::Shutdown
  fun:BrowserMain
  fun:::RunNamedProcessTypeMain
  fun:::ContentMainRunnerImpl::Run
  fun:content::ContentMain
  fun:ChromeMain
  fun:main
}
{
  bug_118319_b
  ThreadSanitizer:Race
  fun:base::Thread::message_loop
  fun:content::BrowserThreadImpl::PostTaskHelper
  fun:content::BrowserThread::PostTask
  fun:PluginLoaderPosix::GetPluginsToLoad
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_118319_c
  ThreadSanitizer:Race
  fun:base::Thread::ThreadMain
  fun:base::::ThreadFunc
}
{
  bug_125928_a
  ThreadSanitizer:Race
  fun:__alloc_dir
  fun:opendir
  fun:g_dir_open
  fun:pango_find_map
  fun:itemize_state_process_run
  fun:pango_itemize_with_base_dir
  fun:pango_layout_check_lines
  fun:pango_layout_get_unknown_glyphs_count
  fun:find_invisible_char
  fun:gtk_entry_init
  fun:g_type_create_instance
  fun:g_object_constructor
  fun:g_object_newv
  fun:g_object_new
  ...
  fun:ThemeServiceFactory::BuildServiceInstanceFor
  fun:BrowserContextKeyedServiceFactory::GetServiceForBrowserContext
  fun:ThemeServiceFactory::GetForProfile
  fun:ExtensionService::GarbageCollectExtensions
  fun:ExtensionService::InitAfterImport
  fun:ExtensionService::Observe
  fun:NotificationServiceImpl::Notify
  fun:ProfileManager::OnImportFinished
  fun:ChromeBrowserMainParts::PreMainMessageLoopRunImpl
  fun:ChromeBrowserMainParts::PreMainMessageLoopRun
  fun:content::BrowserMainLoop::CreateThreads
  fun:::BrowserMainRunnerImpl::Initialize
  fun:BrowserMain
  fun:::RunNamedProcessTypeMain
  fun:::ContentMainRunnerImpl::Run
}
{
  bug_125928_b
  ThreadSanitizer:Race
  fun:__alloc_dir
  fun:opendir
  fun:base::FileEnumerator::ReadDirectory
  fun:base::FileEnumerator::Next
  fun:::GetPrefsCandidateFilesFromFolder
  fun:ExternalPrefLoader::ReadStandaloneExtensionPrefFiles
  fun:ExternalPrefLoader::LoadOnFileThread
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_121574
  ThreadSanitizer:Race
  fun:base::Thread::message_loop
  fun:content::BrowserThreadImpl::PostTaskHelper
  fun:content::BrowserThread::PostTask
  fun:ProcessSingleton::LinuxWatcher::SocketReader::FinishWithACK
  fun:ProcessSingleton::LinuxWatcher::HandleMessage
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_137701
  ThreadSanitizer:Race
  ...
  fun:_output_*
  fun:_vsnprintf_helper
}
{
  bug_144894
  ThreadSanitizer:Race
  fun:av_parser_close
  fun:avcodec_open2
  fun:avformat_find_stream_info
  fun:media::FFmpegConfigHelper::SetupStreamConfigs
  fun:media::FFmpegConfigHelper::Parse
  fun:media::WebMStreamParser::ParseInfoAndTracks
  fun:media::WebMStreamParser::Parse
  fun:media::ChunkDemuxer::AppendData
  fun:media::MockMediaSource::AppendAtTime
  fun:media::PipelineIntegrationTest_MediaSource_ConfigChange_WebM_Test::TestBody
}
{
  bug_172292
  ThreadSanitizer:Race
  fun:testing::internal::CmpHelperGE
  fun:ThreadWatcherTest_MultipleThreadsResponding_Test::TestBody
  fun:testing::internal::HandleSehExceptionsInMethodIfSupported
}
{
  bug_172297
  ThreadSanitizer:Race
  fun:CustomThreadWatcher::UpdateState
  fun:*
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_172306
  ThreadSanitizer:Race
  fun:ThreadWatcher::OnPongMessage
  fun:CustomThreadWatcher::OnPongMessage
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_175467
  ThreadSanitizer:Race
  ...
  fun:file_util::OpenFile
  fun:visitedlink::VisitedLinkMaster::InitFromFile
  fun:visitedlink::VisitedLinkMaster::InitFromFile
  fun:visitedlink::VisitedLinkMaster::InitFromFile
  fun:visitedlink::VisitedLinkMaster::Init
  fun:visitedlink::VisitedLinkEventsTest::CreateBrowserContext
  fun:content::RenderViewHostTestHarness::SetUp
}
{
  bug_178433a
  ThreadSanitizer:Race
  fun:scoped_refptr::operator->
  fun:base::WaitableEvent::Signal
  fun:base::debug::TraceSamplingThread::ThreadMain
  fun:base::::ThreadFunc
}
{
  bug_178433b
  ThreadSanitizer:Race
  fun:base::internal::scoped_ptr_impl::get
  ...
  fun:base::debug::TraceSamplingThread::ThreadMain
}
{
  bug_225123
  ThreadSanitizer:Race
  fun:setlocale
  ...
  fun:gfx::GtkInitFromCommandLine
}
{
  bug_239350_a
  ThreadSanitizer:Race
  fun:av_buffer_unref
  fun:av_frame_unref
  ...
}
{
  bug_239350_b
  ThreadSanitizer:Race
  fun:av_buffer_get_opaque
  fun:av_buffer_get_opaque
  ...
}
{
  bug_256792
  ThreadSanitizer:Race
  fun:media::AudioManagerAlsa::~AudioManagerAlsa
  fun:content::MockAudioManager::~MockAudioManager
  fun:content::MockAudioManager::~MockAudioManager
  fun:base::DefaultDeleter*
  fun:base::internal::scoped_ptr_impl::~scoped_ptr_impl
  fun:scoped_ptr::~scoped_ptr
  fun:content::MediaStreamManagerTest::~MediaStreamManagerTest
  fun:content::MediaStreamManagerTest_MakeAndCancelMediaAccessRequest_Test::~MediaStreamManagerTest_MakeAndCancelMediaAccessRequest_Test
  fun:content::MediaStreamManagerTest_MakeAndCancelMediaAccessRequest_Test::~MediaStreamManagerTest_MakeAndCancelMediaAccessRequest_Test
  fun:testing::Test::DeleteSelf_
  fun:testing::internal::HandleSehExceptionsInMethodIfSupported
}
{
  bug_258935
  ThreadSanitizer:Race
  fun:base::Thread::StopSoon
  fun:base::Thread::Stop
  fun:content::UtilityMainThread::~UtilityMainThread
  fun:content::UtilityMainThread::~UtilityMainThread
  fun:base::DefaultDeleter::operator*
  fun:base::internal::scoped_ptr_impl::~scoped_ptr_impl
  fun:scoped_ptr::~scoped_ptr
  fun:content::UtilityProcessHostImpl::~UtilityProcessHostImpl
  fun:content::UtilityProcessHostImpl::~UtilityProcessHostImpl
  fun:content::BrowserChildProcessHostImpl::OnChildDisconnected
  fun:content::ChildProcessHostImpl::OnChannelError
  fun:IPC::Channel::ChannelImpl::ClosePipeOnError
  fun:IPC::Channel::ChannelImpl::OnFileCanReadWithoutBlocking
  fun:base::MessagePumpLibevent::FileDescriptorWatcher::OnFileCanReadWithoutBlocking
  fun:base::MessagePumpLibevent::OnLibeventNotification
}
{
  bug_268924_a
  ThreadSanitizer:Race
  fun:base::PowerMonitor::PowerMonitor
  fun:content::ChildThread::Init
  fun:content::ChildThread::ChildThread
  fun:content::UtilityThreadImpl::UtilityThreadImpl
}
{
  bug_268924_b
  ThreadSanitizer:Race
  ...
  fun:base::PowerMonitor::*
  fun:content::PowerMonitorMessageBroadcaster::~PowerMonitorMessageBroadcaster
  fun:content::BrowserChildProcessHostImpl::~BrowserChildProcessHostImpl
  fun:content::BrowserChildProcessHostImpl::~BrowserChildProcessHostImpl
}
{
  bug_295418
  ThreadSanitizer:Race
  ...
  fun:testing::internal::UntypedFunctionMockerBase::UntypedInvokeWith
  fun:testing::internal::FunctionMockerBase::InvokeWith
  fun:testing::internal::FunctionMocker::Invoke
  fun:content::::MockWebRtcAudioCapturerSink::CaptureData
  fun:content::::MockWebRtcAudioCapturerSink::CaptureData
  fun:content::WebRtcAudioCapturerSinkOwner::CaptureData
  fun:content::WebRtcLocalAudioTrack::Capture
  fun:content::WebRtcAudioCapturer::TrackOwner::Capture
  fun:content::WebRtcAudioCapturer::Capture
  fun:content::::FakeAudioThread::ThreadMain
  fun:base::::ThreadFunc
}
{
  bug_313726
  ThreadSanitizer:Race
  fun:MessageLoopHelper::TimerExpired
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_329253
  ThreadSanitizer:Race
  fun:setlocale
  fun:base::ScopedLocale::ScopedLocale
  fun:ClientHintsTest_HintsWellFormattedWithNonEnLocale_Test::TestBody
  fun:testing::internal::HandleSehExceptionsInMethodIfSupported
}
{
  bug_328521a
  ThreadSanitizer:Race
  fun:PR_Lock
  fun:pk11_getKeyFromList
  fun:pk11_CreateSymKey
  fun:pk11_ImportSymKeyWithTempl
  fun:PK11_ImportSymKey
  fun:crypto::HMAC::Init
  fun:crypto::HMAC::Init
  fun:crypto::HMAC::Init
  fun:crypto::HMAC::Init
  fun:remoting::protocol::AuthenticationMethod::ApplyHashFunction
  fun:remoting::MakeHostPinHash
  fun:`anonymous namespace'::VerifyGetPinHashResponse
  fun:`anonymous namespace'::VerifyGetPinHashResponse
  fun:`anonymous namespace'::VerifyGetPinHashResponse
  fun:`anonymous namespace'::VerifyGetPinHashResponse
  fun:remoting::Me2MeNativeMessagingHostTest_All_Test::TestBody
}
{
  bug_328521b
  ThreadSanitizer:Race
  fun:PR_Lock
  fun:sftk_SessionFromHandle
  fun:NSC_GenerateKeyPair
  fun:PK11_GenerateKeyPairWithOpFlags
  fun:PK11_GenerateKeyPairWithFlags
  fun:PK11_GenerateKeyPair
  fun:crypto::RSAPrivateKey::CreateWithParams
  fun:crypto::RSAPrivateKey::CreateWithParams
  fun:crypto::RSAPrivateKey::Create
  fun:crypto::RSAPrivateKey::Create
  fun:remoting::RsaKeyPair::Generate
  fun:remoting::Me2MeNativeMessagingHost::ProcessGenerateKeyPair
  fun:remoting::Me2MeNativeMessagingHost::ProcessMessage
  fun:remoting::Me2MeNativeMessagingHost::ProcessMessage
  fun:base::internal::RunnableAdapter::Run
}
{
  bug_344704_a
  ThreadSanitizer:Race
  fun:base::Thread::message_loop
  fun:printing::PrintJob::UpdatePrintedDocument
  fun:printing::PrintJob::ControlledWorkerShutdown
  fun:printing::PrintJob::Stop
  fun:PrintJobTest_SimplePrint_Test::TestBody
}
{
  bug_344704_b
  ThreadSanitizer:Race
  fun:scoped_refptr::operator=
  fun:base::MessageLoop::~MessageLoop
  fun:base::MessageLoop::~MessageLoop
  fun:base::DefaultDeleter::operator*
  fun:base::internal::scoped_ptr_impl::~scoped_ptr_impl
  fun:scoped_ptr::~scoped_ptr
  fun:base::Thread::ThreadMain
}
{
  bug_350982
  ThreadSanitizer:Race
  fun:change_state
  fun:vp9_worker_sync
  fun:decode_tile
  fun:decode_tiles
  fun:vp9_decode_frame
}
{
  bug_343802
  ThreadSanitizer:Race
  ...
  fun:base::debug::TraceLog::GetCategoryGroupEnabledInternal
}
{
  bug_385022
  ThreadSanitizer:Race
  fun:std::_Rb_tree_rebalance_for_erase
  fun:std::_Rb_tree::_M_erase_aux
  fun:std::_Rb_tree::erase
  fun:std::map::erase
  fun:browser_sync::SyncBackendRegistrar::RemoveWorker
  fun:browser_sync::SyncBackendRegistrar::OnWorkerLoopDestroyed
  fun:syncer::ModelSafeWorker::WillDestroyCurrentMessageLoop
  fun:base::MessageLoop::~MessageLoop
  fun:base::MessageLoopForUI::~MessageLoopForUI
  fun:base::MessageLoopForUI::~MessageLoopForUI
  fun:base::DefaultDeleter::operator*
  fun:base::internal::scoped_ptr_impl::~scoped_ptr_impl
  fun:scoped_ptr::~scoped_ptr
  fun:content::TestBrowserThreadBundle::~TestBrowserThreadBundle
  fun:BrowserWithTestWindowTest::~BrowserWithTestWindowTest
  fun:TestWithBrowserView::~TestWithBrowserView
  fun:autofill::AutofillDialogViewsTest::~AutofillDialogViewsTest
  fun:autofill::AutofillDialogViewsTest_SignInFocus_Test::~AutofillDialogViewsTest_SignInFocus_Test
}
