# 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

{
   libc_free_hitting_gce_vms
   Memcheck:Free
   fun:free
   fun:__libc_freeres
   fun:_vgnU_freeres
   ...
}
{
   Ubuntu_Precise_Itoa_Optimized_Code
   Memcheck:Uninitialized
   fun:_itoa_word
   fun:vfprintf
   fun:vsnprintf
   fun:snprintf
   ...
}
# See: https://bugs.chromium.org/p/webrtc/issues/detail?id=7973
{
   libc_getaddrinfo_uninitialized
   Memcheck:Param
   sendmsg(mmsg[0].msg_hdr)
   fun:sendmmsg
   fun:__libc_res_nsend
   fun:__libc_res_nquery
   fun:__libc_res_nsearch
   fun:_nss_dns_gethostbyname4_r
   fun:gaih_inet
   fun:getaddrinfo
   ...
}

#-----------------------------------------------------------------------
# webrtc stuff

{
   bug_6784
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN3rtc10HttpServer16HandleConnectionEPNS_15StreamInterfaceE
   fun:_ZN3rtc12_GLOBAL__N_122CreateClientConnectionERNS_10HttpServerERNS0_17HttpServerMonitorEb
   fun:_ZN3rtc47HttpServer_SignalsCloseAfterForcedCloseAll_Test8TestBodyEv
}
{
   bug_6773
   Memcheck:Uninitialized
   fun:vfprintf
   fun:vsnprintf
   fun:snprintf
   ...
}
{
   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_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
   ...
}
{
   SignalsCloseAfterForcedCloseAll2
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKSsSsEEE8allocateEmPKv
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3rtc5ilessESaIS2_EE11_M_get_nodeEv
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3rtc5ilessESaIS2_EE14_M_create_nodeIJS2_EEEPSt13_Rb_tree_nodeIS2_EDpOT_
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3rtc5ilessESaIS2_EE10_M_insert_IS2_EESt17_Rb_tree_iteratorIS2_EPKSt18_Rb_tree_node_baseSE_OT_
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3rtc5ilessESaIS2_EE15_M_insert_equalIS2_EESt17_Rb_tree_iteratorIS2_EOT_
   fun:_ZNSt8multimapISsSsN3rtc5ilessESaISt4pairIKSsSsEEE6insertIS4_vEESt17_Rb_tree_iteratorIS4_EOT_
   fun:_ZN3rtc8HttpData12changeHeaderERKSsS2_NS0_13HeaderCombineE
   fun:_ZN3rtc8HttpData9setHeaderERKSsS2_b
   fun:_ZN3rtc8HttpData9setHeaderENS_10HttpHeaderERKSsb
   ...
}
{
   DoNotDeleteTask2
   Memcheck:Leak
   fun:_Znw*
   ...
   fun:_ZN3rtc41unstarted_task_test_DoNotDeleteTask2_Test8TestBodyEv
}
{
   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_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_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_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
   ...
}

{
   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_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_5983
   Memcheck:Uninitialized
   fun:_ZN6webrtc11DataChannel4InitERKNS_23InternalDataChannelInitE
   ...
}
{
   bug_5984
   Memcheck:Uninitialized
   fun:_ZN6webrtc15GainControlImpl19ProcessCaptureAudioEPNS_11AudioBufferEb
   ...
}
{
   bug_5987
   Memcheck:Leak
   fun:_Znw*
   fun:_ZN6webrtc51AudioEncoderCopyRedDeathTest_NullSpeechEncoder_Test8TestBodyEv
}
{
   bug_5988
   Memcheck:Leak
   fun:_Znw*
   fun:_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3rtc5ilessESaIS2_EE15_M_insert_equalIS2_EESt17_Rb_tree_iteratorIS2_EOT_
   fun:_ZN3rtc8HttpData12changeHeaderERKSsS2_NS0_13HeaderCombineE
   ...
   fun:_ZN3rtc47HttpServer_SignalsCloseAfterForcedCloseAll_Test8TestBodyEv
}
{
   bug_5989
   Memcheck:Unaddressable
   ...
   fun:_ZNK3rtc15CriticalSection5EnterEv
   ...
}
{
   bug_687087
   Memcheck:Uninitialized
   fun:vfprintf
   fun:vsnprintf
   fun:snprintf
   ...
   fun:_ZNK6webrtc11MockRtpRtcp11FlexfecSsrcEv
   ...
}
