# This is a suppressions file that must exist in order for the Leak Sanitizer
# (LSan) bot to be able to run with the default configuration.
# More info about LSan on
# http://www.chromium.org/developers/testing/leaksanitizer

#### Third-party leaks ####

# Leak reported in libstdc++
leak:std::string::_Rep::_S_create

# False positives in libfontconfig. http://crbug.com/39050
leak:libfontconfig

# Leaks in Nvidia's libGL.
leak:libGL.so

# XRandR has several one time leaks.
leak:libxrandr

# The NSS suppressions above will not fire when the fast stack unwinder is used,
# because it can't unwind through NSS libraries. Apply blanket suppressions for
# now.
leak:libnssutil3
leak:libnspr4
leak:libnss3
leak:libplds4
leak:libnssckbi

# xrandr leak. http://crbug.com/119677
leak:XRRFindDisplay

#### Actual bugs in WebRTC code ####

# rtc_unittest
# https://code.google.com/p/webrtc/issues/detail?id=3827 for details.
leak:rtc::unstarted_task_test_DoNotDeleteTask2_Test::TestBody
leak:rtc::HttpServer::HandleConnection
leak:rtc::HttpServer::Connection::onHttpHeaderComplete
leak:rtc::HttpResponseData::set_success
leak:rtc::HttpData::changeHeader
# https://code.google.com/p/webrtc/issues/detail?id=4149 for details.
leak:StartDNSLookup

# libjingle_media_unittest
# https://code.google.com/p/webrtc/issues/detail?id=
leak:cricket::FakeNetworkInterface::SetOption
leak:CodecTest_TestCodecOperators_Test::TestBody
leak:VideoEngineTest*::ConstrainNewCodecBody
leak:VideoMediaChannelTest*::AddRemoveRecvStreams
leak:WebRtcVideoCapturerTest_TestCapture_Test::TestBody
leak:WebRtcVideoEngineTestFake_MultipleSendStreamsWithOneCapturer_Test::TestBody
leak:WebRtcVideoEngineTestFake_SetBandwidthInConference_Test::TestBody
leak:WebRtcVideoEngineTestFake_SetSendCodecsRejectBadFormat_Test::TestBody

# libjingle_peerconnection_unittest
# https://code.google.com/p/webrtc/issues/detail?id=2528
leak:cricket::FakeVideoMediaChannel::~FakeVideoMediaChannel
leak:cricket::MediaSessionDescriptionFactory::CreateAnswer
leak:cricket::MediaSessionDescriptionFactory::CreateOffer
leak:DtmfSenderTest_InsertEmptyTonesToCancelPreviousTask_Test::TestBody
leak:sigslot::_signal_base2*::~_signal_base2
leak:testing::internal::CmpHelperEQ
leak:webrtc::AudioDeviceLinuxALSA::InitMicrophone
leak:webrtc::AudioDeviceLinuxALSA::InitSpeaker
leak:webrtc::CreateIceCandidate
leak:webrtc::FakeConstraints::AddOptional
leak:webrtc::WebRtcIdentityRequestObserver::OnSuccess
leak:webrtc::WebRtcSessionDescriptionFactory::InternalCreateAnswer
leak:webrtc::WebRtcSessionDescriptionFactory::InternalCreateOffer
leak:PeerConnectionInterfaceTest_SsrcInOfferAnswer_Test::TestBody
leak:PeerConnectionInterfaceTest_CloseAndTestMethods_Test::TestBody
leak:WebRtcSdpTest::TestDeserializeRtcpFb
leak:WebRtcSdpTest::TestSerialize
leak:WebRtcSdpTest_SerializeSessionDescriptionWithDataChannelAndBandwidth_Test::TestBody
leak:WebRtcSdpTest_SerializeSessionDescriptionWithBandwidth_Test::TestBody
leak:WebRtcSessionTest::SetLocalDescriptionExpectError
leak:WebRtcSessionTest_TestAVOfferWithAudioOnlyAnswer_Test::TestBody

# libjingle_unittest
# https://code.google.com/p/webrtc/issues/detail?id=2527
leak:buzz::FakeXmppClient::SendStanza
leak:buzz::XmppTask::XmppTask
leak:HangoutPubSubClientTest::HangoutPubSubClientTest
leak:MucRoomConfigTaskTest::SetUp
leak:MucRoomDiscoveryTaskTest::SetUp
leak:MucRoomLookupTaskTest::SetUp
leak:MucRoomUniqueHangoutIdTaskTest::SetUp
leak:PingTaskTest::SetUp
leak:PingXmppClient::SendStanza
leak:PubSubClientTest::PubSubClientTest
leak:PubSubTasksTest::PubSubTasksTest

