# There are three 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
{
  bug_39050_a
  Heapcheck:Leak
  fun:FcPatternObjectAddWithBinding
}
{
  bug_39050_b
  Heapcheck:Leak
  fun:FcPatternObjectInsertElt
}
{
  bug_39050_c
  Heapcheck:Leak
  fun:FcConfigValues
}
{
  bug_39050_d
  Heapcheck:Leak
  fun:IA__FcLangSetCreate
}
{
  bug_39050_d2
  Heapcheck:Leak
  fun:FcLangSetCreate
}
{
  bug_39050_e
  Heapcheck:Leak
  fun:IA__FcStrCopy
}
{
  bug_39050_e2
  Heapcheck:Leak
  fun:FcStrCopy
}
{
  bug_39050_f
  Heapcheck:Leak
  fun:FcValueSave
}
{
  bug_39050_g
  Heapcheck:Leak
  fun:FcPatternHash
}
{
  bug_39050_h
  Heapcheck:Leak
  fun:FcConfigFilename
}

#-----------------------------------------------------------------------
# 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
{
   Heapcheck sanity test (ToolsSanityTest.MemoryLeak).
   Heapcheck:Leak
   fun:ToolsSanityTest_MemoryLeak_Test::TestBody
}
{
   Intentional leak in DiskCacheBackendTest::BackendInvalidEntry
   Heapcheck:Leak
   ...
   fun:DiskCacheBackendTest::BackendInvalidEntry
}
{
   Intentional leak in DiskCacheBackendTest::BackendInvalidEntryRead
   Heapcheck:Leak
   ...
   fun:DiskCacheBackendTest::BackendInvalidEntryRead
}
{
   Intentional leak in DiskCacheBackendTest::BackendInvalidEntryWithLoad
   Heapcheck:Leak
   ...
   fun:DiskCacheBackendTest::BackendInvalidEntryWithLoad
}
{
   Intentional leak in DiskCacheBackendTest::BackendTrimInvalidEntry
   Heapcheck:Leak
   ...
   fun:DiskCacheBackendTest::BackendTrimInvalidEntry
}
{
   Intentional leak in DiskCacheBackendTest::BackendTrimInvalidEntry2
   Heapcheck:Leak
   ...
   fun:DiskCacheBackendTest::BackendTrimInvalidEntry2
}
{
   Intentional leak in DiskCacheBackendTest::BackendInvalidEntryEnumeration
   Heapcheck:Leak
   ...
   fun:DiskCacheBackendTest::BackendInvalidEntryEnumeration
}
{
   Intentional leak in ChromeThreadTest.NotReleasedIfTargetThreadNonExistent
   Heapcheck:Leak
   fun:ChromeThreadTest_NotReleasedIfTargetThreadNonExistent_Test::TestBody
   fun:testing::Test::Run
}
#-----------------------------------------------------------------------
# 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.
{
   bug_30547_a
   Heapcheck:Leak
   ...
   fun:std::string::_Rep::_S_create
   ...
   fun:base::JSONWriter::Write
   fun:JSONStringValueSerializer::Serialize
   fun:BookmarkStorage::SerializeData
   fun:BookmarkStorage::SaveNow
   fun:BookmarkStorage::BookmarkModelDeleted
   fun:*~BookmarkModel
}

{
   bug_30547_b
   Heapcheck:Leak
   ...
   fun:ImportantFileWriter::WriteNow
   fun:BookmarkStorage::SaveNow
   fun:BookmarkStorage::BookmarkModelDeleted
}

# IPCChannelTest.ChannelProxyTest leaks memory.
{
   bug_26920_a
   Heapcheck:Leak
   fun:*ChannelProxy
   fun:IPCChannelTest_ChannelProxyTest_Test::TestBody
}
# TODO(glider): deal with asterisks in stack traces
# (like "CancelableTask* NewRunnableMethod" here)
{
   bug_26920_b
   Heapcheck:Leak
   ...
   fun:IPC::ChannelProxy::Context::OnChannelError
   fun:IPC::Channel::ChannelImpl::OnFileCanReadWithoutBlocking
   ...
   fun:base::MessagePumpLibevent::OnLibeventNotification
   fun:event_process_active
   fun:event_base_loop
}
{
   bug_26920_c
   Heapcheck:Leak
   fun:__gnu_cxx::new_allocator::allocate
   fun:std::string::_Rep::_S_create
   ...
   fun:*basic_string
   fun:IPCChannelTest_ChannelProxyTest_Test::TestBody
}
{
   bug_31643
   Heapcheck:Leak
   fun:browser_sync::BookmarkModelWorker::CallDoWorkFromModelSafeThreadAndWait
   fun:Syncer::SyncShare
}
{
   bug_17540
   Heapcheck:Leak
   fun:base::MessagePumpLibevent::WatchFileDescriptor
   fun:MessageLoopForIO::WatchFileDescriptor
   fun:IPC::Channel::ChannelImpl::Connect
   fun:IPC::Channel::Connect
   fun:IPC::ChannelProxy::Context::OnChannelOpened
}
{
  bug_39014
  Heapcheck:Leak
  fun:__gnu_cxx::new_allocator::allocate
  fun:std::_Vector_base::_M_allocate
  fun:std::vector::_M_insert_aux
  fun:std::vector::push_back
  fun:IPC::ChannelProxy::Context::OnAddFilter
  fun:void DispatchToMethod
  fun:RunnableMethod::Run
}
{
   bug_34570
   Heapcheck:Leak
   fun:URLRequestHttpJob::Factory
   fun:URLRequestJobManager::CreateJob
   fun:URLRequest::Start
   fun:URLRequestTest_CancelTest_DuringCookiePolicy_Test::TestBody
   fun:testing::Test::Run
   fun:testing::internal::TestInfoImpl::Run
   fun:testing::TestCase::Run
   fun:testing::internal::UnitTestImpl::RunAllTests
   fun:testing::UnitTest::Run
   fun:TestSuite::Run
   fun:main
}
{
   bug_34994_a
   Heapcheck:Leak
   ...
   fun:v8::internal::Invoke
   fun:v8::internal::Execution::Call
   fun:v8::Script::Run
}
{
   bug_34994_b
   Heapcheck:Leak
   ...
   fun:v8::internal::Invoke
   fun:v8::internal::Execution::Call
   fun:v8::Function::Call
}
{
  bug_39021
  Heapcheck:Leak
  ...
  fun:RenderViewTest::ExecuteJavaScript
  fun:ExtensionAPIClientTest_CallbackDispatching_Test::TestBody
}
{
  bug_39016
  Heapcheck:Leak
  ...
  fun:::RenderThreadTest::SetUp
  fun:testing::Test::Run
}

{
  bug_38206_a
  Heapcheck:Leak
  ...
  fun:GeolocationWifiDataProviderCommonTest::SetUp
}

{
  bug_38206_b
  Heapcheck:Leak
  fun:CancelableTask* NewRunnableMethod
  fun:DeviceDataProviderImplBase::NotifyListeners
  fun:WifiDataProviderCommon::DoWifiScanTask
  fun:void DispatchToMethod
  fun:ScopedRunnableMethodFactory::RunnableMethod::Run
  fun:MessageLoop::RunTask
}

# TODO(glider): sometimes the stacks differ between the bot and the local run,
# e.g. "base::subtle::RefCountedBase::RefCountedBase" vs. "RefCountedBase".
{
  bug_38293
  Heapcheck:Leak
  ...
  fun:ScopedRunnableMethodFactory::NewRunnableMethod
  fun:BookmarkBarGtk::BookmarkNodeAdded
  fun:BookmarkModel::AddNode
  fun:BookmarkModel::AddURLWithCreationTime
  fun:BookmarkModel::AddURL
  fun:BookmarkModel::AddURL
  fun:BookmarkBarGtkUnittest_*
}

{
  bug_38305
  Heapcheck:Leak
  fun:browser_sync::UIModelWorker::DoWorkAndWaitUntilDone
  fun:Syncer::SyncShare
  fun:FakeSyncShareTask::Run
  fun:MessageLoop::RunTask
}

{
  bug_38402
  Heapcheck:Leak
  fun:ProfileSyncFactoryImpl::CreateProfileSyncService
  fun:TestingProfile::CreateProfileSyncService
}

{
  bug_39007
  Heapcheck:Leak
  ...
  fun:RenderViewTest::TearDown
}

{
  bug_39009
  Heapcheck:Leak
  ...
  fun:BookmarkModel::Load
  fun:TestingProfile::CreateBookmarkModel
}

{
  bug_38487
  Heapcheck:Leak
  fun:browser_sync::TypedUrlDataTypeController::Stop
  fun:browser_sync::DataTypeManagerImpl::FinishStop
  fun:browser_sync::DataTypeManagerImpl::Stop
  fun:ProfileSyncService::Shutdown
  fun:~ProfileSyncService
  fun:~TestingProfileSyncService
  fun:scoped_ptr::reset
  fun:ProfileSyncServiceTypedUrlTest::TearDown
}

{
  bug_38490
  Heapcheck:Leak
  ...
  fun:browser_sync::SyncBackendHost::Core::NotifyFrontend
}

{
  bug_40499
  Heapcheck:Leak
  fun:UserScriptSlaveTest::Serialize
  ...
  fun:testing::Test::Run
  fun:testing::internal::TestInfoImpl::Run
  fun:testing::TestCase::Run
  fun:testing::internal::UnitTestImpl::RunAllTests
  fun:testing::UnitTest::Run
  fun:TestSuite::Run
}
{
  bug_42153
  Heapcheck:Leak
  fun:::InitPersonalInfo
  fun:AutoFillProfile
  fun:AutoFillProfile::Clone
  fun:browser_sync::AutofillChangeProcessor::ObserveAutofillProfileChanged
}
# ExpectJs*Internal = ExpectJs{Pass,Fail}Internal
# ExtensionAPIClientTest_*_Test =
#   ExtensionAPIClientTest_{CollapseToolstrip_Test,GetAcceptLanguages}_Test
{
  bug_43775_a
  Heapcheck:Leak
  fun:WebCore::makeExternalString
  fun:WebCore::v8ExternalString
  fun:WebCore::V8Proxy::evaluate
  fun:WebCore::ScriptController::evaluate
  fun:WebCore::ScriptController::executeScript
  fun:WebKit::WebFrameImpl::executeScript
  fun:RenderViewTest::ExecuteJavaScript
  fun:ExtensionAPIClientTest::ExpectJs*Internal
  fun:ExtensionAPIClientTest_*_Test::TestBody
}
{
  bug_43775_b
  Heapcheck:Leak
  fun:WTF::fastMalloc
  fun:WebCore::StringImpl::createUninitialized
  fun:WebCore::String::fromUTF8
  fun:WebCore::String::fromUTF8
  fun:WebKit::WebString::fromUTF8
  fun:RenderViewTest::ExecuteJavaScript
  fun:ExtensionAPIClientTest::ExpectJs*Internal
  fun:ExtensionAPIClientTest_*_Test::TestBody
}
{
  bug_43779
  Heapcheck:Leak
  fun:ActiveNotificationTracker::RegisterNotification
  fun:ActiveNotificationTrackerTest_TestLookupAndClear_Test::TestBody
}
{
  bug_43387
  Heapcheck:Leak
  ...
  fun:net::SpdyNetworkTransactionTest_PostWithEarlySynReply_Test::TestBody
}
{
   bug_44130
   Heapcheck:Leak
   ...
   fun:history::TopSitesTest_*
   fun:testing::Test::Run
   fun:testing::internal::TestInfoImpl::Run
   fun:testing::TestCase::Run
   fun:testing::internal::UnitTestImpl::RunAllTests
   fun:testing::UnitTest::Run
   fun:TestSuite::Run
   fun:main
   fun:__libc_start_main
}
{
   bug_44354
   Heapcheck:Leak
   ...
   fun:NetTestSuite::InitializeTestThread
   fun:NetTestSuite::Initialize
}
{
   bug_44667
   Heapcheck:Leak
   fun:Callback1::Type* NewCallback
   fun:media::VideoDecoderImpl::DoInitialize
}
{
   bug_45072
   Heapcheck:Leak
   fun:::RunTest_EnsureTaskDeletion*
   fun:MessageLoopTest_*EnsureTaskDeletion_*::TestBody
}
