# This file is used in addition to the one already maintained in Chrome.
# It acts as a place holder for future additions for WebRTC.
# It must exist for the Python wrapper script to work properly.

# There are three kinds of suppressions in this file.
# 1. third_party libraries
# 2. webrtc stuff
# 3. libjingle stuff (talk folder)
#-----------------------------------------------------------------------

# third_party libraries

{
   libnss_leak_hitting_trusty_machines
   Memcheck:Leak
   fun:calloc
   obj:/usr/lib/x86_64-linux-gnu/libnss3.so
   ...
   fun:NSS_NoDB_Init
   ...
}

#-----------------------------------------------------------------------
# webrtc stuff
{
   bug_3446
   Memcheck:Uninitialized
   fun:vp8cx_pick_filter_level_fast
   fun:vp8_loopfilter_frame
   fun:encode_frame_to_data_rate
   fun:vp8_get_compressed_data
   fun:vp8e_encode
   fun:vpx_codec_encode
   ...
   fun:_ZN6webrtc4test18VideoProcessorImpl12ProcessFrameEi
   fun:_ZN6webrtc29VideoProcessorIntegrationTest22ProcessFramesAndVerifyENS_14QualityMetricsENS_11RateProfileENS_15CodecConfigParsEPNS_18RateControlMetricsE
   fun:_ZN6webrtc70VideoProcessorIntegrationTest_ProcessNoLossSpatialResizeFrameDrop_Test8TestBodyEv
}
{
   bug_1976_1
   Memcheck:Unaddressable
   fun:pthread_mutex_unlock
   fun:_ZN9rtc15CriticalSection5LeaveEv
   fun:_ZN9rtc9CritScopeD1Ev
   ...
   fun:_ZN9rtc6Thread15ProcessMessagesEi
   fun:_ZN9rtc6Thread3RunEv
   fun:_ZN9rtc6Thread6PreRunEPv
}
{
   bug_1976_2
   Memcheck:Leak
   fun:calloc
   obj:/usr/lib/x86_64-linux-gnu/libnss3.so
   ...
   fun:NSS_NoDB_Init
   fun:_ZN9rtc10NSSContext13InitializeSSLEPFbPvE
   fun:_ZN9rtc13InitializeSSLEPFbPvE
   fun:_ZN9rtc10RandomTest13SetUpTestCaseEv
   fun:_ZN7testing8TestCase16RunSetUpTestCaseEv
}
{
   bug_2100_3
   Memcheck:Uninitialized
   fun:tls1_enc
   fun:ssl3_get_record
   fun:ssl3_read_bytes
   fun:ssl3_read_internal
   fun:ssl3_read
   fun:SSL_read
   fun:_ZN9rtc20OpenSSLStreamAdapter4ReadEPvmPmPi
   ...
}
{
   bug_2100_4
   Memcheck:Uninitialized
   fun:_ZN7testing8internal11CmpHelperEQIjhEENS_15AssertionResultEPKcS4_RKT_RKT0_
   fun:_ZN7testing8internal8EqHelperILb0EE7CompareIjhEENS_15AssertionResultEPKcS6_RKT_RKT0_
   fun:_ZN24SSLStreamAdapterTestDTLS8ReadDataEPN9rtc15StreamInterfaceE
   ...
}
{
   bug_2100_5
   Memcheck:Uninitialized
   fun:dtls1_process_record
   fun:dtls1_get_record
   fun:dtls1_read_bytes
   fun:ssl3_read_internal
   fun:ssl3_read
   fun:SSL_read
   fun:_ZN9rtc20OpenSSLStreamAdapter4ReadEPvmPmPi
   ...
}
{
   BIO_new_mem_buf_1
   Memcheck:Leak
   fun:malloc
   fun:default_malloc_ex
   fun:CRYPTO_malloc
   fun:BUF_MEM_new
   fun:mem_new
   fun:BIO_set
   fun:BIO_new
   fun:BIO_new_mem_buf
   fun:_ZN9rtc18OpenSSLCertificate13FromPEMStringERKSs
   ...
}
{
   BIO_new_mem_buf_2
   Memcheck:Leak
   fun:malloc
   fun:default_malloc_ex
   fun:CRYPTO_malloc
   fun:BUF_MEM_new
   fun:mem_new
   fun:BIO_set
   fun:BIO_new
   fun:BIO_new_mem_buf
   fun:_ZN9rtc15OpenSSLIdentity14FromPEMStringsERKSsS2_
}
{
   SignalsCloseAfterForcedCloseAll
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3rtc10HttpServer10Connection12BeginProcessEPNS_15StreamInterfaceE
   ...
}
{
   DoNotDeleteTask2
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3rtc41unstarted_task_test_DoNotDeleteTask2_Test8TestBodyEv
}
{
   bug_716
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN6webrtc11ThreadPosix6CreateEPFbPvES1_NS_14ThreadPriorityEPKc
   fun:_ZN6webrtc13ThreadWrapper12CreateThreadEPFbPvES1_NS_14ThreadPriorityEPKc
   fun:_ZN6webrtc18videocapturemodule22VideoCaptureModuleV4L212StartCaptureERKNS_22VideoCaptureCapabilityE
   fun:_ZN6webrtc11ViECapturer5StartERKNS_17CaptureCapabilityE
   fun:_ZN6webrtc14ViECaptureImpl12StartCaptureEiRKNS_17CaptureCapabilityE
   fun:_ZN15TbCaptureDeviceC1ER12TbInterfaces
   fun:_ZN12_GLOBAL__N_114ViERtpFuzzTest5SetUpEv
}

{
   bug_329_1
   Memcheck:Unaddressable
   fun:I422ToARGBRow_SSSE3
   fun:I420ToARGB
   fun:ConvertFromI420
   fun:_ZN6webrtc15ConvertFromI420EPKhiNS_9VideoTypeEiiiPh
   fun:_ZN6webrtc15VideoX11Channel12DeliverFrameEPhij
   fun:_ZN6webrtc15VideoX11Channel11RenderFrameEjRNS_10VideoFrameE
   fun:_ZN6webrtc19IncomingVideoStream26IncomingVideoStreamProcessEv
   fun:_ZN6webrtc19IncomingVideoStream28IncomingVideoStreamThreadFunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_329_2
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN6webrtc18videocapturemodule16VideoCaptureImpl16CreateDeviceInfoEi
   fun:_ZN6webrtc19VideoCaptureFactory16CreateDeviceInfoEi
   fun:_ZN11ViEAutoTest22ViECaptureStandardTestEv
   fun:_ZN12_GLOBAL__N_160ViEStandardIntegrationTest_RunsCaptureTestWithoutErrors_Test8TestBodyEv
}

{
   bug_329_3
   Memcheck:Unaddressable
   fun:I422ToARGBRow_SSSE3
   fun:I420ToARGB
   fun:ConvertFromI420
   fun:_ZN6webrtc15ConvertFromI420EPKhiNS_9VideoTypeEiiiPh
   fun:_ZN6webrtc15VideoX11Channel12DeliverFrameEPhij
   fun:_ZN6webrtc15VideoX11Channel11RenderFrameEjRNS_10VideoFrameE
   fun:_ZN6webrtc19IncomingVideoStream26IncomingVideoStreamProcessEv
   fun:_ZN6webrtc19IncomingVideoStream28IncomingVideoStreamThreadFunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_329_4
   Memcheck:Param
   socketcall.sendto(msg)
   obj:*libpthread-*.so
   fun:_ZN6webrtc14UdpSocketPosix6SendToEPKaiRKNS_13SocketAddressE
   ...
   fun:_ZN6webrtc17ModuleRtpRtcpImpl16SendOutgoingDataENS_9FrameTypeEajlPKhjPKNS_22RTPFragmentationHeaderEPKNS_14RTPVideoHeaderE
   ...
   fun:_ZN6webrtc10ViEEncoder12DeliverFrameEiPNS_10VideoFrameEiPKj
   fun:_ZN6webrtc20ViEFrameProviderBase12DeliverFrameEPNS_10VideoFrameEiPKj
   fun:_ZN6webrtc11ViECapturer16DeliverI420FrameEPNS_10VideoFrameE
   fun:_ZN6webrtc11ViECapturer17ViECaptureProcessEv
   fun:_ZN6webrtc11ViECapturer24ViECaptureThreadFunctionEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_329_5
   Memcheck:Param
   socketcall.sendto(msg)
   obj:*libpthread-*.so
   fun:_ZN6webrtc14UdpSocketPosix6SendToEPKaiRKNS_13SocketAddressE
   fun:_ZN6webrtc16UdpTransportImpl14SendRTCPPacketEiPKvi
   fun:_ZN6webrtc9ViESender14SendRTCPPacketEiPKvi
   fun:_ZN6webrtc10RTCPSender13SendToNetworkEPKht
   fun:_ZN6webrtc10RTCPSender8SendRTCPEjiPKtbm
   fun:_ZN6webrtc17ModuleRtpRtcpImpl7ProcessEv
   fun:_ZN6webrtc17ProcessThreadImpl7ProcessEv
   fun:_ZN6webrtc17ProcessThreadImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_329_6
   Memcheck:Param
   socketcall.sendto(msg)
   obj:*libpthread-*.so
   fun:_ZN6webrtc14UdpSocketPosix6SendToEPKaiRKNS_13SocketAddressE
   ...
   fun:_ZN6webrtc10ViEEncoder12DeliverFrameEiPNS_10VideoFrameEiPKj
   fun:_ZN6webrtc20ViEFrameProviderBase12DeliverFrameEPNS_10VideoFrameEiPKj
   fun:_ZN6webrtc11ViECapturer16DeliverI420FrameEPNS_10VideoFrameE
   fun:_ZN6webrtc11ViECapturer17ViECaptureProcessEv
}

{
   bug_329_7
   Memcheck:Unaddressable
   fun:I422ToARGBRow_SSSE3
   fun:I420ToARGB
   fun:ConvertFromI420
   fun:_ZN6webrtc15ConvertFromI420ERKNS_10VideoFrameEiNS_9VideoTypeEiPh
   fun:_ZN6webrtc15VideoX11Channel12DeliverFrameERKNS_10VideoFrameE
   fun:_ZN6webrtc15VideoX11Channel11RenderFrameEjRNS_10VideoFrameE
   fun:_ZN6webrtc19IncomingVideoStream26IncomingVideoStreamProcessEv
   fun:_ZN6webrtc19IncomingVideoStream28IncomingVideoStreamThreadFunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_329_8
   Memcheck:Unaddressable
   fun:I422ToARGBRow_SSSE3
   fun:I420ToARGB
   fun:ConvertFromI420
   fun:_ZN6webrtc15ConvertFromI420ERKNS_10VideoFrameEiNS_9VideoTypeEiPh
   fun:_ZN6webrtc15VideoX11Channel12DeliverFrameERKNS_10VideoFrameE
   fun:_ZN6webrtc15VideoX11Channel11RenderFrameEjRNS_10VideoFrameE
   fun:_ZN6webrtc19IncomingVideoStream26IncomingVideoStreamProcessEv
   fun:_ZN6webrtc19IncomingVideoStream28IncomingVideoStreamThreadFunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_898_1
   Memcheck:Uninitialized
   ...
   fun:_ZN16FakeMediaProcess7ProcessEiN6webrtc15ProcessingTypesEPsiib
   ...
   fun:_ZN6webrtc21AudioDeviceLinuxPulse17PlayThreadProcessEv
   fun:_ZN6webrtc21AudioDeviceLinuxPulse14PlayThreadFuncEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_898_2
   Memcheck:Uninitialized
   ...
   fun:_ZN16FakeMediaProcess7ProcessEiN6webrtc15ProcessingTypesEPsiib
   ...
   fun:_ZN6webrtc21AudioDeviceLinuxPulse16RecThreadProcessEv
   fun:_ZN6webrtc21AudioDeviceLinuxPulse13RecThreadFuncEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_332_1
   Memcheck:Uninitialized
   ...
   fun:_ZN6webrtc11VoEBaseImpl16NeedMorePlayDataEjhhjPvRj
   fun:_ZN6webrtc17AudioDeviceBuffer18RequestPlayoutDataEj
   fun:_ZN6webrtc21AudioDeviceLinuxPulse17PlayThreadProcessEv
   fun:_ZN6webrtc21AudioDeviceLinuxPulse14PlayThreadFuncEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_332_2
   Memcheck:Unaddressable
   fun:memcpy@@GLIBC_2.14
   fun:_ZN6webrtc21AudioDeviceLinuxPulse16ReadRecordedDataEPKvm
   fun:_ZN6webrtc21AudioDeviceLinuxPulse16RecThreadProcessEv
   fun:_ZN6webrtc21AudioDeviceLinuxPulse13RecThreadFuncEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_332_3
   Memcheck:Uninitialized
   fun:_ZN6webrtc11RTCPUtility21RTCPParseCommonHeaderEPKhS2_RNS0_16RTCPCommonHeaderE
   ...
   fun:_ZN6webrtc12RTCPReceiver10HandleSDESERNS_11RTCPUtility12RTCPParserV2E
   fun:_ZN6webrtc12RTCPReceiver18IncomingRTCPPacketERNS_8RTCPHelp21RTCPPacketInformationEPNS_11RTCPUtility12RTCPParserV2E
   fun:_ZN6webrtc17ModuleRtpRtcpImpl14IncomingPacketEPKht
   fun:_ZN6webrtc3voe7Channel18IncomingRTCPPacketEPKaiPKct
   fun:_ZN6webrtc16UdpTransportImpl20IncomingRTCPFunctionEPKaiPKNS_13SocketAddressE
   fun:_ZN6webrtc16UdpTransportImpl20IncomingRTCPCallbackEPvPKaiPKNS_13SocketAddressE
   fun:_ZN6webrtc14UdpSocketPosix11HasIncomingEv
   fun:_ZN6webrtc25UdpSocketManagerPosixImpl7ProcessEv
   fun:_ZN6webrtc25UdpSocketManagerPosixImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_332_4
   Memcheck:Uninitialized
   ...
   fun:_ZN6webrtc3voe10AudioLevel12ComputeLevelERKNS_10AudioFrameE
   fun:_ZN6webrtc3voe11OutputMixer28DoOperationsOnCombinedSignalEv
   fun:_ZN6webrtc11VoEBaseImpl16NeedMorePlayDataEjhhjPvRj
   fun:_ZN6webrtc17AudioDeviceBuffer18RequestPlayoutDataEj
   fun:_ZN6webrtc21AudioDeviceLinuxPulse17PlayThreadProcessEv
   fun:_ZN6webrtc21AudioDeviceLinuxPulse14PlayThreadFuncEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_332_5
   Memcheck:Uninitialized
   fun:WebRtcSpl_UpBy2ShortToInt
   fun:WebRtcSpl_Resample8khzTo22khz
   fun:_ZN6webrtc9Resampler4PushEPKsiPsiRi
   fun:_ZN6webrtc3voe16RemixAndResampleERKNS_10AudioFrameEPNS_9ResamplerEPS1_
   fun:_ZN6webrtc3voe11OutputMixer13GetMixedAudioEiiPNS_10AudioFrameE
   fun:_ZN6webrtc11VoEBaseImpl16NeedMorePlayDataEjhhjPvRj
   fun:_ZN6webrtc17AudioDeviceBuffer18RequestPlayoutDataEj
   fun:_ZN6webrtc21AudioDeviceLinuxPulse17PlayThreadProcessEv
   fun:_ZN6webrtc21AudioDeviceLinuxPulse14PlayThreadFuncEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug 332_6
   Memcheck:Param
   socketcall.sendto(msg)
   obj:*libpthread-*.so
   fun:_ZN6webrtc14UdpSocketPosix6SendToEPKaiRKNS_13SocketAddressE
   fun:_ZN6webrtc16UdpTransportImpl14SendRTCPPacketEiPKvi
   fun:_ZN6webrtc3voe7Channel14SendRTCPPacketEiPKvi
   ...
   fun:_ZN6webrtc17ModuleRtpRtcpImpl14IncomingPacketEPKht
   fun:_ZN6webrtc3voe7Channel17IncomingRTPPacketEPKaiPKct
   fun:_ZN6webrtc16UdpTransportImpl19IncomingRTPFunctionEPKaiPKNS_13SocketAddressE
   fun:_ZN6webrtc16UdpTransportImpl19IncomingRTPCallbackEPvPKaiPKNS_13SocketAddressE
   fun:_ZN6webrtc14UdpSocketPosix11HasIncomingEv
   fun:_ZN6webrtc25UdpSocketManagerPosixImpl7ProcessEv
   fun:_ZN6webrtc25UdpSocketManagerPosixImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}


{
   bug_332_7
   Memcheck:Param
   socketcall.sendto(msg)
   obj:*libpthread-*.so
   fun:_ZN6webrtc14UdpSocketPosix6SendToEPKaiRKNS_13SocketAddressE
   fun:_ZN6webrtc16UdpTransportImpl10SendPacketEiPKvi
   ...
   fun:_ZN6webrtc21AudioDeviceLinuxPulse16ReadRecordedDataEPKvm
   fun:_ZN6webrtc21AudioDeviceLinuxPulse16RecThreadProcessEv
   fun:_ZN6webrtc21AudioDeviceLinuxPulse13RecThreadFuncEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_332_8
   Memcheck:Param
   socketcall.sendto(msg)
   obj:*libpthread-*.so
   fun:_ZN6webrtc14UdpSocketPosix6SendToEPKaiRKNS_13SocketAddressE
   fun:_ZN6webrtc16UdpTransportImpl14SendRTCPPacketEiPKvi
   fun:_ZN6webrtc3voe7Channel14SendRTCPPacketEiPKvi
   fun:_ZN6webrtc10RTCPSender13SendToNetworkEPKht
   fun:_ZN6webrtc10RTCPSender8SendRTCPEjiPKtbm
   fun:_ZN6webrtc17ModuleRtpRtcpImpl7ProcessEv
   fun:_ZN6webrtc17ProcessThreadImpl7ProcessEv
   fun:_ZN6webrtc17ProcessThreadImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_332_9
   Memcheck:Uninitialized
   ...
   fun:_ZN6webrtc17AudioDeviceBuffer19DeliverRecordedDataEv
   fun:_ZN6webrtc21AudioDeviceLinuxPulse19ProcessRecordedDataEPajj
   fun:_ZN6webrtc21AudioDeviceLinuxPulse16ReadRecordedDataEPKvm
   fun:_ZN6webrtc21AudioDeviceLinuxPulse16RecThreadProcessEv
   fun:_ZN6webrtc21AudioDeviceLinuxPulse13RecThreadFuncEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_332_10
   Memcheck:Uninitialized
   ...
   fun:_ZN6webrtc12RTCPReceiver18IncomingRTCPPacketERNS_8RTCPHelp21RTCPPacketInformationEPNS_11RTCPUtility12RTCPParserV2E
   fun:_ZN6webrtc17ModuleRtpRtcpImpl14IncomingPacketEPKht
   fun:_ZN6webrtc3voe7Channel18IncomingRTCPPacketEPKaiPKct
   fun:_ZN6webrtc16UdpTransportImpl20IncomingRTCPFunctionEPKaiPKNS_13SocketAddressE
   fun:_ZN6webrtc16UdpTransportImpl20IncomingRTCPCallbackEPvPKaiPKNS_13SocketAddressE
   fun:_ZN6webrtc14UdpSocketPosix11HasIncomingEv
   fun:_ZN6webrtc25UdpSocketManagerPosixImpl7ProcessEv
   fun:_ZN6webrtc25UdpSocketManagerPosixImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   bug_891
   Memcheck:Unaddressable
   fun:XShmPutImage
   fun:_ZN6webrtc15VideoX11Channel12DeliverFrameEPhij
   fun:_ZN6webrtc15VideoX11Channel11RenderFrameEjRNS_10VideoFrameE
   fun:_ZN6webrtc19IncomingVideoStream26IncomingVideoStreamProcessEv
   fun:_ZN6webrtc19IncomingVideoStream28IncomingVideoStreamThreadFunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:StartThread
}

{
   ignore_common_benevolent_trace_library_errors
   Memcheck:Uninitialized
   ...
   fun:vsnprintf
   fun:_ZN6webrtc5Trace3AddENS_10TraceLevelENS_11TraceModuleEiPKcz
   ...
}

{
   ignore_leak_when_alsa_hits_error
   Memcheck:Leak
   ...
   fun:snd_device_name_hint
   fun:_ZNK6webrtc20AudioDeviceLinuxALSA14GetDevicesInfoEibiPci
   fun:_ZN6webrtc20AudioDeviceLinuxALSA16SetPlayoutDeviceEt
   fun:_ZN6webrtc21AudioDeviceModuleImpl16SetPlayoutDeviceEt
   fun:_ZN6webrtc11VoEBaseImpl4InitEPNS_17AudioDeviceModuleE
   fun:_ZN11ViEAutoTest19ViEFileStandardTestEv
   fun:_ZN12_GLOBAL__N_157ViEStandardIntegrationTest_RunsFileTestWithoutErrors_Test8TestBodyEv
}

{
   bug_270_1
   Memcheck:Uninitialized
   ...
   fun:WebRtcNetEQ_RecOutInternal
   fun:WebRtcNetEQ_RecOut
   ...
}

{
   bug_270_2
   Memcheck:Uninitialized
   fun:WebRtcNetEQ_GetSpeechOutputType
   ...
}

#-----------------------------------------------------------------------
# libjingle stuff (talk folder)
{
   bug_2056_1
   Memcheck:Leak
   fun:malloc
   fun:_dl_close_worker
   fun:_dl_close
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlclose
   ...
   fun:snd_device_name_hint
   fun:_ZNK6webrtc20AudioDeviceLinuxALSA14GetDevicesInfoEibiPci
   ...
}
{
   bug_2100_1
   Memcheck:Uninitialized
   fun:_ZN7testing8internal11CmpHelperEQIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_
   fun:_ZN7testing8internal8EqHelperILb1EE7CompareIiiEENS_15AssertionResultEPKcS6_RKT_RKT0_PNS0_8EnableIfIXntsrNS0_10is_pointerISA_EE5valueEE4typeE
   ...
}
{
   bug_2100_2
   Memcheck:Uninitialized
   fun:bcmp
   fun:_ZN23SSLStreamAdapterTestTLS12TestTransferEi
   ...
}
# For tests that create XMPPClient which can only be deleted by task runner.
{
   HangoutPubSubClientTest
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN*HangoutPubSubClientTest*Ev
}
{
   MucRoomConfigTaskTest
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN21MucRoomConfigTaskTest5SetUpEv
}
{
   MucRoomDiscoveryTaskTest
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN24MucRoomDiscoveryTaskTest5SetUpEv
}
{
   MucRoomLookupTaskTest
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN21MucRoomLookupTaskTest5SetUpEv
}
{
   MucRoomUniqueHangoutIdTaskTest
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN30MucRoomUniqueHangoutIdTaskTest5SetUpEv
}
{
   PingTaskTest
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN12PingTaskTest5SetUpEv
}
{
   PubSubClientTest
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN*PubSubClientTest*Ev
}
{
   PubSubTasksTest
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN*PubSubTasksTest*Ev
}
# failures which can't be reproduced locally
{
   bug_2153_1
   Memcheck:Leak
   fun:calloc
   ...
   fun:_ZN6webrtc26AudioMixerManagerLinuxALSA11OpenSpeakerEPc
   fun:_ZN6webrtc20AudioDeviceLinuxALSA11InitSpeakerEv
   ...
}
{
   bug_2153_3
   Memcheck:Leak
   fun:calloc
   obj:*
   fun:_ZN6webrtc26AudioMixerManagerLinuxALSA14OpenMicrophoneEPc
   fun:_ZN6webrtc20AudioDeviceLinuxALSA14InitMicrophoneEv
   ...
}
{
   bug_2263_1
   Memcheck:Uninitialized
   fun:_ZN14DtlsTestClient12VerifyPacketEPKcmPj
   ...
}
{
   bug_3063
   Memcheck:Uninitialized
   ...
   fun:vfprintf
   fun:__vsnprintf_chk
   fun:_ZN6webrtc5Trace3AddENS_10TraceLevelENS_11TraceModuleEiPKcz
   fun:_ZNK6webrtc12ViECodecImpl21GetCodecTargetBitrateEiPj
   fun:_ZN7cricket23WebRtcVideoMediaChannel23MaybeChangeStartBitrateEiPN6webrtc10VideoCodecE
   fun:_ZN7cricket23WebRtcVideoMediaChannel12SetSendCodecEPNS_26WebRtcVideoChannelSendInfoERKN6webrtc10VideoCodecEiii
   fun:_ZN7cricket23WebRtcVideoMediaChannel12SetSendCodecERKN6webrtc10VideoCodecEiii
   fun:_ZN7cricket23WebRtcVideoMediaChannel13SetSendCodecsERKSt6vectorINS_10VideoCodecESaIS2_EE
   fun:_ZN21VideoMediaChannelTestIN7cricket17WebRtcVideoEngineENS0_23WebRtcVideoMediaChannelEE11SetOneCodecERKNS0_10VideoCodecE
   fun:_ZN21VideoMediaChannelTestIN7cricket17WebRtcVideoEngineENS0_23WebRtcVideoMediaChannelEE4SendERKNS0_10VideoCodecE
   fun:_ZN21VideoMediaChannelTestIN7cricket17WebRtcVideoEngineENS0_23WebRtcVideoMediaChannelEE36TwoStreamsSendAndFailUnsignalledRecvERKNS0_10VideoCodecE
   fun:_ZN69WebRtcVideoMediaChannelTest_TwoStreamsSendAndFailUnsignalledRecv_Test8TestBodyEv
}
{
   bug_3478
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNK3rtc18FakeSSLCertificate12GetReferenceEv
   fun:_ZN3rtc18FakeSSLCertificate7DupCertES0_
   fun:_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPKN3rtc18FakeSSLCertificateESt6vectorIS3_SaIS3_EEEENS1_IPPNS2_14SSLCertificateES6_ISB_SaISB_EEEEPFPS3_S3_EET0_T_SK_SJ_T1_
   fun:_ZNK3rtc18FakeSSLCertificate8GetChainEPPNS_12SSLCertChainE
   fun:_ZN6webrtc14StatsCollector21AddCertificateReportsEPKN3rtc14SSLCertificateE
   fun:_ZN6webrtc14StatsCollector18ExtractSessionInfoEv
   fun:_ZN6webrtc14StatsCollector11UpdateStatsENS_23PeerConnectionInterface16StatsOutputLevelE
   fun:_ZN12_GLOBAL__N_118StatsCollectorTest22TestCertificateReportsERKN3rtc18FakeSSLCertificateERKSt6vectorISsSaISsEES4_S9_
   fun:_ZN12_GLOBAL__N_156StatsCollectorTest_ChainedCertificateReportsCreated_Test8TestBodyEv
}
{
   bug_4147_1
   Memcheck:Unaddressable
   fun:_ZNK6webrtc8internal15scoped_ptr_implINS_13RWLockWrapperENS_14DefaultDeleterIS2_EEE3getEv
   fun:_ZNK6webrtc10scoped_ptrINS_13RWLockWrapperENS_14DefaultDeleterIS1_EEEdeEv
   fun:_ZN6webrtc15FileWrapperImpl5FlushEv
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_2
   Memcheck:Unaddressable
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_3
   Memcheck:Unaddressable
   fun:_ZN6webrtc15WriteLockScopedC2ERNS_13RWLockWrapperE
   fun:_ZN6webrtc15FileWrapperImpl5FlushEv
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_4
   Memcheck:Unaddressable
   fun:_ZN6webrtc21CriticalSectionScopedC2EPNS_22CriticalSectionWrapperE
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_5
   Memcheck:Unaddressable
   fun:pthread_rwlock_unlock
   fun:_ZN6webrtc11RWLockPosix20ReleaseLockExclusiveEv
   fun:_ZN6webrtc15WriteLockScopedD2Ev
   fun:_ZN6webrtc15FileWrapperImpl5FlushEv
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_6
   Memcheck:Unaddressable
   fun:pthread_mutex_lock
   fun:_ZN6webrtc20CriticalSectionPosix5EnterEv
   fun:_ZN6webrtc21CriticalSectionScopedC2EPNS_22CriticalSectionWrapperE
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_7
   Memcheck:Unaddressable
   fun:__pthread_mutex_lock_full
   fun:_ZN6webrtc20CriticalSectionPosix5EnterEv
   fun:_ZN6webrtc21CriticalSectionScopedC2EPNS_22CriticalSectionWrapperE
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_8
   Memcheck:Unaddressable
   fun:__pthread_mutex_unlock_full
   fun:_ZN6webrtc20CriticalSectionPosix5LeaveEv
   fun:_ZN6webrtc21CriticalSectionScopedD2Ev
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_9
   Memcheck:Unaddressable
   fun:pthread_mutex_unlock
   fun:_ZN6webrtc20CriticalSectionPosix5LeaveEv
   fun:_ZN6webrtc21CriticalSectionScopedD2Ev
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_10
   Memcheck:Unaddressable
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_11
   Memcheck:Unaddressable
   fun:__pthread_mutex_unlock_full
   fun:_ZN6webrtc20CriticalSectionPosix5LeaveEv
   fun:_ZN6webrtc21CriticalSectionScopedD2Ev
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_12
   Memcheck:Unaddressable
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_13
   Memcheck:Unaddressable
   fun:pthread_mutex_lock
   fun:_ZN6webrtc10EventPosix4WaitEm
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_14
   Memcheck:Unaddressable
   fun:_ZN6webrtc15WriteLockScopedD2Ev
   fun:_ZN6webrtc15FileWrapperImpl5FlushEv
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_15
   Memcheck:Unaddressable
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_16
   Memcheck:Unaddressable
   fun:__pthread_mutex_lock_full
   fun:_ZN6webrtc10EventPosix4WaitEm
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_17
   Memcheck:Unaddressable
   fun:_ZN6webrtc15FileWrapperImpl9FlushImplEv
   fun:_ZN6webrtc15FileWrapperImpl5FlushEv
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_18
   Memcheck:Unaddressable
   fun:pthread_mutex_lock
   fun:_ZN6webrtc20CriticalSectionPosix5EnterEv
   fun:_ZN6webrtc21CriticalSectionScopedC2EPNS_22CriticalSectionWrapperE
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_19
   Memcheck:Unaddressable
   fun:strcmp
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_20
   Memcheck:Unaddressable
   fun:_ZN6webrtc21CriticalSectionScopedC2EPNS_22CriticalSectionWrapperE
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_21
   Memcheck:Unaddressable
   fun:_ZN6webrtc21CriticalSectionScopedD2Ev
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_22
   Memcheck:Unaddressable
   fun:pthread_rwlock_wrlock
   fun:_ZN6webrtc11RWLockPosix20AcquireLockExclusiveEv
   fun:_ZN6webrtc15WriteLockScopedC2ERNS_13RWLockWrapperE
   fun:_ZN6webrtc15FileWrapperImpl5FlushEv
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_23
   Memcheck:Unaddressable
   fun:__pthread_mutex_lock_full
   fun:_ZN6webrtc20CriticalSectionPosix5EnterEv
   fun:_ZN6webrtc21CriticalSectionScopedC2EPNS_22CriticalSectionWrapperE
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_24
   Memcheck:Unaddressable
   fun:_ZN6webrtc21CriticalSectionScopedD2Ev
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_25
   Memcheck:Unaddressable
   fun:pthread_rwlock_unlock
   fun:_ZN6webrtc11RWLockPosix20ReleaseLockExclusiveEv
   fun:_ZN6webrtc15WriteLockScopedD2Ev
   fun:_ZN6webrtc15FileWrapperImpl5FlushEv
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_26
   Memcheck:Unaddressable
   fun:pthread_mutex_unlock
   fun:_ZN6webrtc20CriticalSectionPosix5LeaveEv
   fun:_ZN6webrtc21CriticalSectionScopedD2Ev
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
{
   bug_4147_27
   Memcheck:Unaddressable
   fun:pthread_rwlock_wrlock
   fun:_ZN6webrtc11RWLockPosix20AcquireLockExclusiveEv
   fun:_ZN6webrtc15WriteLockScopedC2ERNS_13RWLockWrapperE
   fun:_ZN6webrtc15FileWrapperImpl5FlushEv
   fun:_ZN6webrtc9TraceImpl7ProcessEv
   fun:_ZN6webrtc9TraceImpl3RunEPv
   fun:_ZN6webrtc11ThreadPosix3RunEv
   fun:_ZN6webrtc11StartThreadEPv
}
