### this file contains suppressions for valgrind when running
### the gstreamer unit tests
### it might be useful for wider use as well

### syscall suppressions

{
   <clone on Wim's Debian>
   Memcheck:Param
   clone(parent_tidptr)
   fun:clone
   fun:clone
}

{
   <clone on Wim's Debian>
   Memcheck:Param
   clone(child_tidptr)
   fun:clone
   fun:clone
}

{
   <clone on Wim's Debian>
   Memcheck:Param
   clone(tlsinfo)
   fun:clone
   fun:clone
}

# a thread-related free problem in glibc from Edgard
{
   __libc_freeres_rw_acess
   Memcheck:Addr4
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:__libc_freeres
}

{
   <futex on Andy's 64-bit ubuntu>
   Memcheck:Param
   futex(uaddr2)
   fun:pthread_once
   obj:/lib/libc-2.3.*.so
   obj:/lib/libc-2.3.*.so
   fun:mbsnrtowcs
   fun:vfprintf
   fun:vsprintf
   fun:sprintf
   obj:/lib/libc-2.3.*.so
   fun:tmpfile
   fun:setup_pipe
   fun:setup_messaging_with_key
   fun:setup_messaging
}

# suppression for a glibc bug:
# http://valgrind.org/docs/manual/faq.html#faq.exit_errors>
{
   <Workaround for a glibc bug>
   Memcheck:Free
   fun:free
   obj:*libc-*.so
   fun:__libc_freeres
   fun:*
   fun:_Exit
}

# same as above, just so it works for tpm on gutsy/x86-64
{
   <workaround glibc bug on gutsy x86-64>
   Memcheck:Free
   fun:free
   fun:free_mem
   fun:__libc_freeres
}

### glib suppressions
{
   <g_parse_debug_string>
   Memcheck:Cond
   fun:g_parse_debug_string
   obj:/usr/lib*/libglib-2.0.so.*
   fun:g_slice_alloc
   fun:g_slice_alloc0
}

{
   <g_type_init leaks>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:g_type_init*
   fun:init_pre*
}

{
   <g_type_register_fundamental leaks>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:g_type_register_fundamental
}

{
   <glib 2.21 static type data>
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:g_realloc
   fun:type_node_any_new_W
}

{
   <glib 2.21 static type data>
   Memcheck:Leak
   fun:realloc
   fun:g_realloc
   fun:type_node_any_new_W
}

{
   <glib 2.21 static type data>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:g_type_class_ref
}

{
   <glib 2.21 static type data>
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:g_realloc
   fun:type_add_flags_W
}

{
   <glib 2.21 static type data>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:type_add_flags_W
}

#pthread memleaks

{
   pthread_create Syscall param write(buf) points to uninitialised byte(s)
   Memcheck:Param
   write(buf)
   fun:pthread_create@@GLIBC_2.2.5
   fun:g_thread_create*

}

# nss_parse_* memleak (used by g_option_context_parse)
{
   nss_parse_* memleak
   Memcheck:Leak
   fun:malloc
   fun:nss_parse_service_list
   fun:__nss_database_lookup
}

# liboil suppressions
{
   <liboil cpu_fault_check_try>
   Memcheck:Value8
   obj:/usr/lib/liboil-0.3.so.0.1.0
   obj:/usr/lib/liboil-0.3.so.0.1.0
   obj:/usr/lib/liboil-0.3.so.0.1.0
   fun:oil_cpu_fault_check_try
   fun:oil_test_check_impl
   fun:oil_class_optimize
   fun:oil_optimize_all
   fun:oil_init
}

{
   <Ubuntu Dapper x86_64>
   Memcheck:Param
   futex(uaddr2)
   fun:pthread_once
   obj:/lib/libc-2.3.6.so
   obj:/lib/libc-2.3.6.so
   fun:setlocale
   fun:init_pre
   fun:g_option_context_parse
   fun:gst_init_check
   fun:gst_init
   fun:gst_check_init
   fun:main
}

{
   <libcdio 0.76 leak>
   Memcheck:Leak
   fun:calloc
   obj:/usr/lib/libcdio.so.6.0.1
   fun:cdio_open_am_linux
   obj:/usr/lib/libcdio.so.6.0.1
   fun:cdio_open_am
}

{
   <First of many Alsa errors>
   Memcheck:Cond
   fun:snd_pcm_direct_shm_create_or_connect
   fun:snd_pcm_dsnoop_open
   fun:_snd_pcm_dsnoop_open
   obj:/*lib/libasound.so.2.0.0
   obj:/*lib/libasound.so.2.0.0
   fun:snd_pcm_open_slave
   fun:_snd_pcm_plug_open
   obj:/*lib/libasound.so.2.0.0
   fun:snd_pcm_open_slave
   fun:_snd_pcm_asym_open
   obj:/*lib/libasound.so.2.0.0
   obj:/*lib/libasound.so.2.0.0
}

{
   <alsa error>
   Memcheck:Cond
   fun:snd*_pcm_hw_param_set_near
}

{
   <alsa error>
   Memcheck:Cond
   ...
   fun:snd*_pcm_hw_param_set_near
}

{
   <alsa error>
   Memcheck:Cond
   obj:/*lib/libasound.so.2.0.0
   obj:/*lib/libasound.so.2.0.0
   fun:snd_pcm_close
   obj:/*lib/libasound.so.2.0.0
}
{
   <alsa error>
   Memcheck:Cond
   fun:snd_pcm_direct_shm_create_or_connect
   fun:snd_pcm_dmix_open
   fun:_snd_pcm_dmix_open
   obj:/*lib/libasound.so.2.0.0
   obj:/*lib/libasound.so.2.0.0
   fun:snd_pcm_open_slave
   fun:_snd_pcm_softvol_open
   obj:/*lib/libasound.so.2.0.0
   fun:snd_pcm_open_slave
   fun:_snd_pcm_plug_open
   obj:/*lib/libasound.so.2.0.0
   fun:snd_pcm_open_slave
   fun:_snd_pcm_asym_open
   obj:/*lib/libasound.so.2.0.0
   obj:/*lib/libasound.so.2.0.0
}
{
   <alsa error>
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:snd_dlobj_cache_add
   obj:/*lib/libasound.so.2.0.0
   fun:snd_pcm_open_slave
   fun:snd_pcm_dsnoop_open
   fun:_snd_pcm_dsnoop_open
   obj:/*lib/libasound.so.2.0.0
   obj:/*lib/libasound.so.2.0.0
   fun:snd_pcm_open_slave
   fun:_snd_pcm_plug_open
   obj:/*lib/libasound.so.2.0.0
   fun:snd_pcm_open_slave
   fun:_snd_pcm_asym_open
   obj:/*lib/libasound.so.2.0.0
   obj:/*lib/libasound.so.2.0.0
}
# Catch about 15 variations on inserting info into an ALSA
# internal cache
{
   <alsa error>
   Memcheck:Leak
   fun:malloc
   ...
   fun:snd*_dlobj_cache_add
   obj:/*lib*/libasound.so.2.0.0
}

{
   <alsa leak in loading configuration>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:snd_pcm_open_conf
}

{
   <alsa leak snd_config_hook_load>
   Memcheck:Leak
   fun:*alloc
   obj:/*lib*/libasound.so.2.0.0
   ...
   fun:snd_config_hook_load
}

{
   <alsa leak snd_config_update_r>
   Memcheck:Leak
   fun:*alloc
   obj:/*lib*/libasound.so.2.0.0
   ...
   fun:snd_config_update_r
   fun:snd_config_update
}
{
   <alsa leak snd_config_update_r>
   Memcheck:Leak
   fun:*alloc
   fun:strdup
   ...
   fun:snd_config_update_r
   fun:snd_config_update
}

{
   <nss lookup within ALSA>
   Memcheck:Leak
   fun:malloc
   obj:/lib/libc*.so
   fun:__nss_database_lookup
   obj:*
   obj:*
   fun:getgrnam_r
   fun:getgrnam
   fun:snd_pcm_direct_parse_open_conf
}

{
   <libxcb leak on Ubuntu Feisty>
   Memcheck:Leak
   fun:calloc
   fun:_XCBInitDisplayLock
   fun:XOpenDisplay
}

# GConf internal initialisations related to getting the default client.
{
   <Orbit something or other>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc_tcval
   obj:/usr/lib/libORBit-2.so.*
   fun:ORBit_demarshal_IOR
   fun:ORBit_demarshal_object
   fun:CORBA_ORB_string_to_object
   obj:/usr/lib/libgconf-2.so.*
   fun:gconf_get_current_lock_holder
   fun:gconf_activate_server
   obj:/usr/lib/libgconf-2.so.*
   obj:/usr/lib/libgconf-2.so.*
   fun:gconf_engine_get_default
}
{
   <gconf internal leak>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc_tcval
   obj:*
   fun:PortableServer_POA_servant_to_reference
   fun:*
   fun:*
   fun:*
   fun:gconf_engine_get_default
}
{
   <gconf internal leak>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc_tcval
   obj:/usr/lib/libORBit-2.so.*
   fun:ORBit_demarshal_IOR
   fun:ORBit_demarshal_object
   fun:CORBA_ORB_string_to_object
   obj:/usr/lib/libgconf-2.so.*
   fun:gconf_get_current_lock_holder
   fun:gconf_activate_server
   obj:/usr/lib/libgconf-2.so.*
   obj:/usr/lib/libgconf-2.so.*
   fun:gconf_engine_get_default
}
{
   <gconf internal initialisation>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc*
   fun:*
   fun:ORBit_demarshal_IOR
   fun:ORBit_demarshal_object
   fun:ORBit_demarshal_value
   fun:*
   fun:ORBit_small_invoke_stub
   fun:ConfigServer_get_default_database
   fun:*
   fun:gconf_engine_get_default
}
{
   <gconf internal init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc*
   fun:*
   fun:IOP_generate_profiles
   fun:ORBit_marshal_object
   fun:ORBit_marshal_value
   fun:*
   fun:ORBit_small_invoke_stub
   fun:ConfigServer_add_client
   fun:*
   fun:*
   fun:gconf_engine_get_default
}
{
   <gconf internal init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc_by_tc
   fun:*
   fun:PortableServer_POA_servant_to_reference
   fun:*
   fun:*
   fun:*
   fun:gconf_engine_get_default
}
{
   <gconf internal init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc_by_tc
   obj:/usr/lib/libORBit-2.so.*
   fun:ORBit_demarshal_IOR
   fun:ORBit_demarshal_object
   fun:CORBA_ORB_string_to_object
   obj:/usr/lib/libgconf-2.so.*
   fun:gconf_get_current_lock_holder
   fun:gconf_activate_server
   obj:/usr/lib/libgconf-2.so.*
   obj:/usr/lib/libgconf-2.so.*
   fun:gconf_engine_get_default
}

{
   <insert a suppression name here>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc*
   fun:*
   fun:ORBit_demarshal_IOR
   fun:ORBit_demarshal_object
   fun:*
   fun:*
   fun:gconf_activate_server
}

# Some libORBit/bonobo initialisation stuff
{
   <bonobo init>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:ORBit_alloc_string
   fun:CORBA_string_dup
   fun:Bonobo_ActivationEnvValue_set
   fun:bonobo_activation_init_activation_env
   fun:bonobo_activation_orb_init
   fun:bonobo_activation_init
}
{
   <bonobo init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc*
   fun:ORBit_small_alloc*
   obj:/usr/lib/libORBit-2.so*
   fun:PortableServer_POA_servant_to_reference
   obj:/usr/lib/libbonobo-2.so*
}
{
   <bonobo init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc_tcval
   fun:ORBit_small_allocbuf
   fun:ORBit_adaptor_setup
   obj:/usr/lib/libORBit-2.so*
   fun:ORBit_POA_setup_root
   fun:ORBit_init_internals
   fun:CORBA_ORB_init
}
{
   <bonobo init - more recent variant of above>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc_tcval
   fun:ORBit_adaptor_setup
   fun:*
   fun:ORBit_POA_setup_root
   fun:ORBit_init_internals
   fun:CORBA_ORB_init
}
{
   <bonobo init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc*
   fun:ORBit_small_allocbuf
   fun:bonobo_activation_init_activation_env
   fun:bonobo_activation_orb_init
   fun:bonobo_activation_init
}

# More GConf stuff from the FC5 buildbot, mostly variations on the
# above stack traces
{
   <incompletely initialised ORBit buffer>
   Memcheck:Param
   writev(vector[...])
   fun:writev
   obj:/usr/lib/libORBit-2.so*
   fun:link_connection_writev
   fun:giop_send_buffer_write
   obj:/usr/lib/libORBit-2.so*
   fun:ORBit_small_invoke_stub
   fun:ORBit_small_invoke_stub_n
   fun:ORBit_c_stub_invoke
   fun:ConfigServer_ping
   fun:gconf_activate_server
   obj:/usr/lib/libgconf-2.so*
   obj:/usr/lib/libgconf-2.so*
   fun:gconf_engine_get_default
}
{
   <gconf init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc*
   fun:ORBit_small_alloc*
   obj:/usr/lib/libORBit-2.so*
   fun:PortableServer_POA_servant_to_reference
   obj:/usr/lib/libgconf-2.so*
   obj:/usr/lib/libgconf-2.so*
   obj:/usr/lib/libgconf-2.so*
   fun:gconf_engine_get_default
}
{
   <gconf init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc*
   fun:ORBit_small_alloc
   obj:/usr/lib/libORBit-2.so*
   fun:ORBit_demarshal_IOR
   fun:ORBit_demarshal_object
   fun:CORBA_ORB_string_to_object
   obj:/usr/lib/libgconf-2.so*
   fun:gconf_get_current_lock_holder
   fun:gconf_activate_server
   obj:/usr/lib/libgconf-2.so*
   obj:/usr/lib/libgconf-2.so*
   fun:gconf_engine_get_default
}
{
   <gconf init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc*
   fun:ORBit_small_alloc*
   obj:/usr/lib/libORBit-2.so*
   fun:ORBit_demarshal_IOR
   fun:ORBit_demarshal_object
   fun:CORBA_ORB_string_to_object
   obj:/usr/lib/libgconf-2.so*
   fun:gconf_get_current_lock_holder
   fun:gconf_activate_server
   obj:/usr/lib/libgconf-2.so*
   obj:/usr/lib/libgconf-2.so*
   fun:gconf_engine_get_default
}
{
   <bonobo init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc*
   fun:ORBit_small_alloc*
   obj:/usr/lib/libORBit-2.so*
   fun:ORBit_demarshal_IOR
   fun:ORBit_demarshal_object
   fun:ORBit_demarshal_value
   obj:/usr/lib/libORBit-2.so*
   fun:ORBit_small_invoke_stub
   fun:ORBit_small_invoke_stub_n
   fun:ORBit_c_stub_invoke
   fun:ConfigServer_get_default_database
   obj:/usr/lib/libgconf-2.so*
   fun:gconf_engine_get_default
}
{
   <gconf init>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:ORBit_alloc*
   fun:ORBit_small_alloc*
   obj:/usr/lib/libORBit-2.so*
   fun:ORBit_OAObject_object_to_objkey
   fun:IOP_generate_profiles
   fun:ORBit_marshal_object
   fun:ORBit_marshal_value
   obj:/usr/lib/libORBit-2.so*
   fun:ORBit_small_invoke_stub
   fun:ORBit_small_invoke_stub_n
   fun:ORBit_c_stub_invoke
   fun:ConfigServer_add_client
   obj:/usr/lib/libgconf-2.so*
   obj:/usr/lib/libgconf-2.so*
   fun:gconf_engine_get_default
}
{
   <GLib caching the home dir>
   Memcheck:Leak
   fun:malloc
   obj:*libc-*.so
   fun:__nss_database_lookup
   obj:*
   obj:*
   fun:getpwnam_r
   obj:/usr/lib*/libglib-2.0.so.*
   fun:g_get_home_dir
}
{
   <GLib caching the user name>
   Memcheck:Leak
   fun:malloc
   obj:*libc-*.so
   fun:__nss_database_lookup
   obj:*
   obj:*
   fun:getpwnam_r
   obj:/usr/lib*/libglib-2.0.so.*
   fun:g_get_user_name
}
{
   <GLib caching the tmp dir>
   Memcheck:Leak
   fun:malloc
   obj:*libc-*.so
   fun:__nss_database_lookup
   obj:*
   obj:*
   fun:getpwnam_r
   obj:/usr/lib*/libglib-2.0.so.*
   fun:g_get_tmp_dir
}

{
   <GLib caching the host name>
   Memcheck:Leak
   fun:malloc
   obj:*libc-*.so
   fun:__nss_database_lookup
   obj:*
   obj:*
   fun:getpwnam_r
   obj:/usr/lib*/libglib-2.0.so.0.*
   fun:g_get_host_name
}


## Some Fontconfig errors.
{
   <First time load of a font - feisty x86_64>
   Memcheck:Leak
   fun:malloc
   fun:FcPatternObjectInsertElt
   fun:FcPatternObjectAddWithBinding
   fun:FcPatternAppend
   fun:FcEndElement
   obj:/usr/lib/libexpat.so.*
   obj:/usr/lib/libexpat.so.*
   obj:/usr/lib/libexpat.so.*
   obj:/usr/lib/libexpat.so.*
   fun:XML_ParseBuffer
   fun:FcConfigParseAndLoad
   fun:FcConfigParseAndLoad
   fun:FcParseInclude
   fun:FcEndElement
   obj:/usr/lib/libexpat.so.*
   obj:/usr/lib/libexpat.so.*
   obj:/usr/lib/libexpat.so.*
   obj:/usr/lib/libexpat.so.*
   fun:XML_ParseBuffer
   fun:FcConfigParseAndLoad
}
{
   <First time load of a font - generic>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:FcInitLoadConfig
}

## Leaks in ALSA (variations of leak from snd_config_load1)

{
   <Alsa leak>
   Memcheck:Leak
   fun:calloc
   fun:_snd_config_make
   fun:_snd_config_make_add
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:calloc
   fun:_snd_config_make
   fun:_snd_config_make_add
   fun:*
   fun:*
   fun:snd_config_load1
}
{
   <Alsa leak>
   Memcheck:Leak
   fun:calloc
   fun:_snd_config_make
   fun:_snd_config_make_add
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}
{
   <Alsa leak>
   Memcheck:Leak
   fun:calloc
   fun:_snd_config_make
   fun:_snd_config_make_add
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:calloc
   fun:_snd_config_make
   fun:_snd_config_make_add
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:calloc
   fun:_snd_config_make
   fun:_snd_config_make_add
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}
{
   <Alsa leak>
   Memcheck:Leak
   fun:calloc
   fun:_snd_config_make
   fun:_snd_config_make_add
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:malloc
   fun:snd1_dlobj_cache_add
   fun:snd_ctl_open_noupdate
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:malloc
   fun:*
   fun:snd1_dlobj_cache_add
   fun:snd_ctl_open_noupdate
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}

{
   <Alsa leak>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:snd_config_load1
}


# The following are leaks of caps that need to be created dynamically
# in the type registration of the plugin (used for pad templates).

{
   <Leak in ogmparsers>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:gst_caps_new_empty
   fun:gst_caps_new_simple
   fun:*
   fun:g_type_class_ref
   fun:gst_element_register
}

{
   <Leak in ogmparsers>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:gst_caps_new_empty
   fun:*
   fun:*
   fun:g_type_class_ref
   fun:gst_element_register
   fun:gst_ogm_parse_plugin_init
   fun:plugin_init
}

{
   <Leak in videotestsrc>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:gst_caps_new_empty
   fun:gst_caps_copy
   fun:gst_video_test_src_base_init
   fun:g_type_class_ref
   fun:gst_element_register
}

{
   <Leak in videotestsrc>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:gst_caps_new_empty
   fun:gst_caps_copy
   fun:gst_video_test_src_getcaps
   fun:gst_video_test_src_base_init
   fun:g_type_class_ref
   fun:gst_element_register
}

{
   <Leak in ffmpegcolorspace>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:gst_caps_new_empty
   fun:gst_ffmpegcsp_codectype_to_caps
   fun:gst_ffmpegcolorspace_register
   fun:plugin_init
}

{
   <Leak in ffmpegocolorspace>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:gst_caps_new_empty
   fun:gst_caps_copy
   fun:gst_ffmpegcolorspace_register
   fun:plugin_init
}

{
   <Leak in gstffmpegdemux>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:gst_caps_new_empty
   fun:gst_caps_new_any
   fun:gst_ffmpegdemux_register
   fun:plugin_init
}

{
   <Leak in GstAudioFilter subclasses>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:gst_caps_new_empty
   fun:gst_caps_copy
   fun:gst_audio_filter_class_add_pad_templates
}

{
   <Leak in GstAudioFilter subclasses, variant>
   Memcheck:Leak
   fun:realloc
   fun:g_realloc
   fun:g_ptr_array_maybe_expand
   fun:g_ptr_array_add
   fun:gst_caps_append
   fun:gst_audio_filter_class_add_pad_templates
}

{
   <Leak in GstAudioFilter subclasses, variant>
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:g_realloc
   fun:g_ptr_array_maybe_expand
   fun:g_ptr_array_add
   fun:gst_caps_append
   fun:gst_audio_filter_class_add_pad_templates
}

{
   <Leak in GstAudioFilter subclasses, variant>
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:g_realloc
   fun:g_ptr_array_maybe_expand
   fun:g_ptr_array_add
   fun:gst_caps_copy
   fun:gst_audio_filter_class_add_pad_templates
}

{
   <Leak in GstAudioFilter subclasses, variant2>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:g_ptr_array_sized_new
   fun:gst_caps_new_empty
   fun:gst_caps_copy
   fun:gst_audio_filter_class_add_pad_templates
}
{
   <Leak in GstAudioFilter subclasses, variant3>
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:g_realloc
   fun:g_array_maybe_expand
   fun:g_array_sized_new
   fun:*
   fun:*
   fun:*
   fun:gst_value_init_and_copy
   fun:gst_structure_copy
   fun:gst_caps_copy
   fun:gst_audio_filter_class_add_pad_templates
}
{
   <Leak in GstAudioFilter subclasses, variant4>
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:g_realloc
   fun:g_array_maybe_expand
   fun:g_array_sized_new
   fun:*
   fun:gst_structure_copy
   fun:gst_caps_copy
   fun:gst_audio_filter_class_add_pad_templates
}
{
   <Leak in GstAudioFilter subclasses, variant5>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:g_array_sized_new
   fun:*
   fun:gst_structure_copy
   fun:gst_caps_copy
   fun:gst_audio_filter_class_add_pad_templates
}

{
   <Leak in riff-media>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:gst_caps_new_empty
   fun:gst_riff_create_*_template_caps
}
{
   <Leak in riff-media>
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:g_realloc
   fun:*
   fun:*
   fun:*
   fun:gst_structure_copy
   fun:gst_caps_copy
   fun:gst_caps_append
   fun:gst_riff_create_*_template_caps
}
{
   <Leak in riff-media>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:g_array_sized_new
   fun:*
   fun:gst_structure_copy
   fun:gst_caps_copy
   fun:gst_caps_append
   fun:gst_riff_create_*_template_caps
}

## Leaks in pango (bilboed: gentoo unstable amd64)

{
   <Pango leak - generic>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:pango_layout_get_pixel_extents
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:pango_language_from_string
   fun:pango_language_get_default
   fun:pango_context_init
   fun:g_type_create_instance
   fun:g_object_constructor
   fun:g_object_newv
   fun:g_object_new_valist
   fun:g_object_new
   fun:pango_font_map_create_context
}

{
   <PangoLanguage can never be freed>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   fun:pango_language_from_string
}


## Leak of everything allocated by gst-libav plugin init
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:gst_ffmpeg_cfg_init
}

## Leak of GIO module through gnomevfs

{
   <gio leak>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:*
   fun:*
   fun:g_type_create_instance
   fun:*
   fun:*
   fun:*
   fun:*
   fun:g_io_module_new
   fun:g_io_modules_load_all_in_directory
   fun:*
   fun:get_default_vfs
}

## Conditional jump in getaddrinfo (bilboed, gentoo ~amd64, Dec 13 2008)
{
   <Leak of addrinfo in esd>
   Memcheck:Cond
   fun:gaih_inet
   fun:getaddrinfo
}

## Dynamic pad templates in mxfmux
{
   <Dynamic pad templates in mxfmux>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:gst_caps_new_empty
   fun:gst_caps_from_string
   fun:mxf_*_init
   fun:plugin_init
}

## We don't know if ffmpeg frees this or not and better pass a copy for safety
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_strdup
   fun:gst_ffmpeg_cfg_fill_context
   fun:gst_ffmpegenc_setcaps
   fun:gst_pad_set_caps
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   obj:/lib*/libc-2.10.*.so
   obj:/lib*/libc-2.10.*.so
   fun:_vgnU_freeres
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   obj:/lib*/libc-2.10.*.so
   obj:/lib*/libc-2.10.*.so
   fun:_vgnU_freeres
}
{
   <glibc-2.10 mysterious invalid free on exit>
   Memcheck:Free
   fun:free
   obj:/lib*/libc-2.10.*.so
   obj:/lib*/libc-2.10.*.so
   fun:_vgnU_freeres
}

# glibc-2.10 dl overreads

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:__tls*
   obj:*
   obj:*
   fun:_vgnU_freeres
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Param
   arch_prctl(arg2)
   fun:init_tls
}

# GModule issues with glibc-2.10
{
   <glibc-2.10 GLIB leaks>
   Memcheck:Value8
   fun:g_module_*
   fun:gst_plugin*
}
{
   <glibc-2.10 GLIB leaks>
   Memcheck:Value8
   fun:*
   fun:g_module_*
   fun:gst_plugin*
}

# Leak in GSlice
{
   <insert a suppression name here>
   Memcheck:Value8
   fun:g_parse_debug_string
   fun:slice_config_init
   fun:g_slice_init_nomessage
   fun:_g_slice_thread_init_nomessage
   fun:g_thread_init_glib
}

# 2.10 pthread issues
{
   <insert a suppression name here>
   Memcheck:Value8
   fun:__pthread_initialize_minimal
}

# glib type leaks
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:g_type_register_static
}

# new registry system
# all of this will only be created once when loading registry.

{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:_priv_gst_registry_chunks_load_plugin
}

# system-wide tags
# these tags are registered once

{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:*
   fun:gst_tag_register
   fun:_gst_tag_initialize
}

# system-wide tags
# these tags are registered once

{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:gst_tag_register_static
}

# system-wide type classes that we keep referenced

{
   <g_type_class_ref leaks>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:g_type_class_ref
}

# leaking cached queries which are only initialized once
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:_gst_query_initialize
   fun:init_post
}

# macosx (leopard) library loader leak
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:_Znwm
   fun:_ZNSs4_Rep9_S_createEmmRKSaIcE
   fun:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag
   fun:_ZNSsC2EPKcRKSaIcE
   fun:_Z41__static_initialization_and_destruction_0ii
   fun:_ZN16ImageLoaderMachO18doModInitFunctionsERKN11ImageLoader11LinkContextE
}

# GObject type registration
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:_g_atomic_array_copy
}

{
   <getdelim one-time inits called from libselinux>
   Memcheck:Leak
   fun:*alloc
   fun:getdelim
   obj:*libselinux*
}

{
   <weird one when re-reading registry>
   Memcheck:Leak
   fun:*alloc
   ...
   obj:*/sed
}

{
   <weird one when re-reading registry>
   Memcheck:Addr8
   ...
   obj:*/sed
}

# GLib 2.23 interface vtable
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:g_type_add_interface_static
}

{
   <leak in dash on debian sid>
   Memcheck:Leak
   fun:*alloc
   obj:*/dash
}

# libtool/gentoo fake leak
# it actually runs bash and valgrind complains
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   obj:/bin/bash
}

{
   <ignore possbly-lost leaks in the plugin scanner which doesn't clean up properly>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:_gst_plugin_loader_client_run
   fun:main
}

{
   <warning with libc 2.13-2 as in Debian/unstable on amd64>
   Memcheck:Cond
   fun:*strcasecmp*
   ...
   fun:__dcigettext
}

{
   <warning with libc 2.13-2 as in Debian/unstable on amd64>
   Memcheck:Value8
   fun:*strcasecmp*
   ...
   fun:__dcigettext
}

{
   <GstSystemClock is a singleton and does not leak>
   Memcheck:Leak
   fun:malloc
   ...
   fun:gst_poll_new
   fun:gst_poll_new_timer
   fun:gst_system_clock_init
}

{
   <glib types are singletons>
   Memcheck:Leak
   fun:calloc
   ...
   fun:gobject_init_ctor
}

{
   <quark table is leaked on purpose if it grows too big>
   Memcheck:Leak
   fun:malloc
   ...
   fun:g_quark_from*_string
}

{
  <timer_create suppressions for earlier valgrind versions that complain>
  Memcheck:Param
  timer_create(evp)
  fun:timer_create@@GLIBC_2.3.3
}

{
   closures aren't valgrind friendly (bgo#739850)
   Memcheck:Leak
   fun:calloc
   ...
   fun:g_cclosure_new
}

{
   closures aren't valgrind friendly (bgo#739850)
   Memcheck:Leak
   fun:malloc
   ...
   fun:g_closure_add_invalidate_notifier
}

{
   closures aren't valgrind friendly (bgo#739850)
   Memcheck:Leak
   fun:calloc
   ...
   fun:g_closure_new_simple
}

{
   glib/giomodules2 (from libsoup.supp)
   Memcheck:Leak
   ...
   fun:_g_io_module_get_default
}

{
   <valgrind bug when trying to parse "infinity" from "interleaved">
   Memcheck:Addr8
   fun:__GI___strncasecmp_l
   fun:____strtod_l_internal
   fun:gst_value_deserialize_double
}

{
   <glibc overreads/conditionals>
   Memcheck:Addr8
   fun:do_lookup_x
}

{
   <quark tables are leaked on purpose when they are expanded, observed with glib 2.46 and gst-rtsp-server tests>
   Memcheck:Leak
   fun:malloc
   ...
   fun:g_quark_init
}

{
   Leak of debug function list
   Memcheck:Leak
   fun:*alloc
   ...
   fun:g_slist_prepend
   fun:gst_debug_add_log_function
}
{
   <We do not care about anything ld related, and don't use library constructors>
   Memcheck:Addr1
   ...
   obj:*/ld-*.so
   ...
}
{
   <We do not care about anything ld related, and don't use library constructors>
   Memcheck:Addr2
   ...
   obj:*/ld-*.so
   ...
}
{
   <We do not care about anything ld related, and don't use library constructors>
   Memcheck:Addr4
   ...
   obj:*/ld-*.so
   ...
}
{
   <We do not care about anything ld related, and don't use library constructors>
   Memcheck:Addr8
   ...
   obj:*/ld-*.so
   ...
}
{
   <We do not care about anything ld related, and don't use library constructors>
   Memcheck:Leak
   ...
   obj:*/ld-*.so
   ...
}
{
   <We do not care about anything ld related, and don't use library constructors>
   Memcheck:Cond
   ...
   obj:*/ld-*.so
   ...
}
