### 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
}

### glibc suppressions

{
   <conditional jump on wim's debian 2/2/06>
   Memcheck:Cond
   obj:/lib/ld-2.*.so
   fun:dl_open_worker
   obj:/lib/ld-2.*.so
   fun:_dl_open
   fun:dlopen_doit
   obj:/lib/ld-2.*.so
   fun:_dlerror_run
   fun:dlopen
   fun:g_module_open
   fun:gst_plugin_load_file
}

{
   <Conditional jump>
   Memcheck:Cond
   fun:strlen
   fun:fillin_rpath
   fun:_dl_init_paths
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
   obj:/lib64/ld-2.*.so
   obj:*
   obj:*
}

{
   <Conditional jump>
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
}

{
   <insert a suppression name here>
   Memcheck:Cond
   fun:*
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
}

# glibc does not deallocate thread-local storage

{
   <tls>
   Memcheck:Leak
   fun:calloc
   fun:_dl_allocate_tls
   fun:pthread_create@@*
}

# I get an extra stack entry on x86/dapper
{
   <tls>
   Memcheck:Leak
   fun:calloc
   obj:/lib/ld-2.3.*.so
   fun:_dl_allocate_tls
   fun:pthread_create@@*
}


{
   <pthread strstr>
   Memcheck:Cond
   fun:strstr
   fun:__pthread_initialize_minimal
   obj:/lib/libpthread-*.so
   obj:/lib/libpthread-*.so
   fun:call_init
   fun:_dl_init
   obj:/lib/ld-*.so
}

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

{
   <a conditional jump on wim's debian>
   Memcheck:Cond
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
}

# g_module_open-related problems
{
   <started showing up on fc4-quick>
   Memcheck:Addr2
   fun:memcpy
   fun:_dl_map_object_deps
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
   fun:gst_plugin_load_file
   fun:gst_registry_scan_path_level
   fun:gst_registry_scan_path_level
   fun:gst_registry_scan_path_level
   fun:init_post
   fun:g_option_context_parse
   fun:gst_init_check
   fun:gst_init
   fun:gst_check_init
   fun:main
}

{
   <started showing up on fc4-quick>
   Memcheck:Addr4
   fun:memcpy
   fun:_dl_map_object_deps
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
   fun:gst_plugin_load_file
   fun:gst_registry_scan_path_level
   fun:gst_registry_scan_path_level
   fun:gst_registry_scan_path_level
   fun:init_post
   fun:g_option_context_parse
   fun:gst_init_check
   fun:gst_init
   fun:gst_check_init
   fun:main
}

{
   <g_module_open on wim's debian>
   Memcheck:Cond
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   fun:do_sym
   fun:_dl_sym
   fun:dlsym_doit
   obj:/lib/ld-2.3.*.so
   fun:_dlerror_run
   fun:dlsym
   fun:g_module_symbol
   fun:g_module_open
   fun:gst_plugin_load_file
}

{
   <g_module_open on wim's debian>
   Memcheck:Cond
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   fun:dl_open_worker
   obj:/lib/ld-2.3.*.so
   fun:_dl_open
   fun:dlopen_doit
   obj:/lib/ld-2.3.*.so
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
   fun:gst_plugin_load_file
}
{
   <g_module_open on wim's debian>
   Memcheck:Cond
   obj:/lib/ld-2.3.*.so
   fun:dl_open_worker
   obj:/lib/ld-2.3.*.so
   fun:_dl_open
   fun:dlopen_doit
   obj:/lib/ld-2.3.*.so
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
   fun:gst_plugin_load_file
   fun:gst_plugin_load_by_name
   fun:gst_plugin_feature_load
}

{
   <leak on wim's debian in g_module_open>
   Memcheck:Leak
   fun:malloc
   obj:/lib/ld-2.3.*.so
   fun:dl_open_worker
   obj:/lib/ld-2.3.*.so
   fun:_dl_open
   fun:dlopen_doit
   obj:/lib/ld-2.3.*.so
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
   fun:gst_plugin_load_file
   fun:gst_plugin_load_by_name
}

{
   <invalid read on wim's debian>
   Memcheck:Addr4
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   fun:dl_open_worker
   obj:/lib/ld-2.3.*.so
   fun:_dl_open
   fun:dlopen_doit
   obj:/lib/ld-2.3.*.so
}

{
   <invalid read on wim's debian>
   Memcheck:Addr4
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   fun:dl_open_worker
   obj:/lib/ld-2.3.*.so
   fun:_dl_open
   fun:dlopen_doit
   obj:/lib/ld-2.3.*.so
   fun:_dlerror_run
}

{
   <invalid read on wim's debian - 2006-02-02>
   Memcheck:Addr4
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   fun:dl_open_worker
   obj:/lib/ld-2.3.*.so
   fun:_dl_open
   fun:dlopen_doit
   obj:/lib/ld-2.3.*.so
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
}

{
   <invalid read on wim's debian - 2006-02-02>
   Memcheck:Addr4
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   fun:dl_open_worker
   obj:/lib/ld-2.3.*.so
   fun:_dl_open
   fun:dlopen_doit
   obj:/lib/ld-2.3.*.so
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
}

{
   <invalid read on wim's debian - 2006-02-02>
   Memcheck:Addr4
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   fun:do_sym
   fun:_dl_sym
   fun:dlsym_doit
   obj:/lib/ld-2.3.*.so
   fun:_dlerror_run
   fun:dlsym
   fun:g_module_symbol
   fun:g_module_open
}

{
   <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 glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   fun:_dl_sym
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlsym
   fun:g_module_symbol
   fun:g_module_open
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   fun:iconv_open
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   obj:/lib/i686/cmov/libc-2.7.so
   fun:iconv_open
}

{
   <suppression for glibc 2.7 on Ubunty Hardy 64-bit>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
   obj:/lib/libc-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/libc-2.7.so
   fun:iconv_open
}

{
   <suppression for glibc 2.7 on Ubunty Hardy 64-bit>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
   obj:/lib/libc-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/libc-2.7.so
   fun:iconv_open
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on Ubunty Hardy 64-bit>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Cond
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Cond
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Cond
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Cond
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Cond
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Cond
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

{
   <suppression for glibc 2.7 on debian>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/i686/cmov/libdl-2.7.so
   fun:dlopen
}

# 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
}

# valgrind doesn't allow me to specify a suppression for Addr1, Addr2, Addr4
# as Addr*, so 3 copies for that; and then 2 of each for that pesky memcpy
{
   <Invalid read of size 1, 2, 4 on thomas's FC4>
   Memcheck:Addr1
   fun:_dl_signal_error
   fun:_dl_map_object_deps
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
}

{
   <Invalid read of size 1, 2, 4 on thomas's FC4>
   Memcheck:Addr2
   fun:_dl_signal_error
   fun:_dl_map_object_deps
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
}
{
   <Invalid read of size 1, 2, 4 on thomas's FC4>
   Memcheck:Addr4
   fun:_dl_signal_error
   fun:_dl_map_object_deps
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
}

{
   <Invalid read of size 1, 2, 4 on thomas's FC4>
   Memcheck:Addr1
   fun:memcpy
   fun:_dl_signal_error
   fun:_dl_map_object_deps
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
}

{
   <Invalid read of size 1, 2, 4 on thomas's FC4>
   Memcheck:Addr2
   fun:memcpy
   fun:_dl_signal_error
   fun:_dl_map_object_deps
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
}
{
   <Invalid read of size 1, 2, 4 on thomas's FC4>
   Memcheck:Addr4
   fun:memcpy
   fun:_dl_signal_error
   fun:_dl_map_object_deps
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
   fun:g_module_open
}

{
   <Addr8 on Andy's AMD64 ubuntu in dl_open>
   Memcheck:Addr8
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/libc-2.3.*.so
   obj:/lib/ld-2.3.*.so
   fun:_dl_open
   obj:/lib/libdl-2.3.*.so
   obj:/lib/ld-2.3.*.so
}

{
   <Conditional jump on Andy's AMD64 ubuntu>
   Memcheck:Cond
   obj:/lib/ld-2.3.*.so
   obj:/lib/libc-2.3.*.so
   obj:/lib/ld-2.3.*.so
   fun:_dl_open
   obj:/lib/libdl-2.3.*.so
   obj:/lib/ld-2.3.*.so
   obj:/lib/libdl-2.3.*.so
   fun:dlopen
   fun:g_module_open
   fun:gst_plugin_load_file
   fun:gst_plugin_load_by_name
   fun:gst_plugin_feature_load
}

{
   <Mike's x86 dapper>
   Memcheck:Addr4
   obj:/lib/ld-2.3.6.so
   obj:/lib/ld-2.3.6.so
   obj:/lib/tls/i686/cmov/libc-2.3.6.so
   obj:/lib/ld-2.3.6.so
   fun:_dl_open
   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
   obj:/lib/ld-2.3.6.so
   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
   fun:dlopen
}

{
   <Mike's x86 dapper>
   Memcheck:Cond
   obj:/lib/ld-2.3.6.so
   obj:/lib/tls/i686/cmov/libc-2.3.6.so
   obj:/lib/ld-2.3.6.so
   fun:_dl_open
   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
   obj:/lib/ld-2.3.6.so
   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
   fun:dlopen
}

{
   <Another dapper one>
   Memcheck:Cond
   obj:/lib/ld-2.3.6.so
   obj:/lib/ld-2.3.6.so
   obj:/lib/ld-2.3.6.so
   obj:/lib/tls/i686/cmov/libc-2.3.6.so
   obj:/lib/ld-2.3.6.so
   fun:_dl_open
   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
   obj:/lib/ld-2.3.6.so
   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
   fun:dlopen
}

### 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

{
   Thread creation leak
   Memcheck:Leak
   fun:calloc
   fun:allocate_dtv
   fun:_dl_allocate*
   fun:_dl_allocate*
   fun:__pthread_initialize_minimal
}

{
   Thread management leak
   Memcheck:Leak
   fun:calloc
   fun:allocate_dtv
   fun:_dl_allocate*
   fun:_dl_allocate*
   fun:__pthread_*
}

{
   Thread management leak 2
   Memcheck:Leak
   fun:memalign
   fun:_dl_allocate*
   fun:_dl_allocate*
   fun:__pthread_*
}

{
   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
}

{
   <annoying read error inside dlopen stuff on Ubuntu Dapper x86_64>
   Memcheck:Addr8
   obj:/lib/ld-2.3.6.so
}

{
   <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
}

{
   <Ubuntu Dapper x86_64 dlopen stuff again>
   Memcheck:Cond
   obj:/lib/ld-2.3.6.so
   obj:/lib/ld-2.3.6.so
   fun:_dl_open
   obj:/lib/libdl-2.3.6.so
   obj:/lib/ld-2.3.6.so
   obj:/lib/libdl-2.3.6.so
   fun:dlopen
   fun:g_module_open
   fun:gst_plugin_load_file
}
# this exists in a bunch of different variations, hence the short tail/trace
{
   <dlopen invalid read of size 4 suppression on tpm's Ubuntu edgy/x86>
   Memcheck:Addr4
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
}
{
   <and the same for 64bit systems>
   Memcheck:Addr8
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
}

# More edgy suppressions (Mike)
{
   <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
   Memcheck:Cond
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   fun:dlopen_doit
   obj:/lib/ld-2.4.so
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
}

{
   <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
   Memcheck:Cond
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   fun:dlopen_doit
   obj:/lib/ld-2.4.so
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.1
}

{
   <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
   Memcheck:Cond
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   fun:do_sym
   fun:_dl_sym
}

# This one's overly general, but there's zero other information in the stack
# trace - just these five lines!
{
   <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
   Memcheck:Cond
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
}

{
   <tls leaks on Edgy/x86>
   Memcheck:Leak
   fun:calloc
   obj:/lib/ld-2.4.so
   fun:_dl_allocate_tls
   fun:pthread_create@@GLIBC_2.1
}

# TLS leaks for feisty/x86
{
   <tls leaks on Feisty/x86>
   Memcheck:Leak
   fun:calloc
   fun:allocate_dtv
   fun:_dl_allocate_tls
   fun:pthread_create@@GLIBC_2.1
}

{
   <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
}

{
   <Addr8 on Jan's AMD64 ubuntu Feisty in dl_open>
   Memcheck:Addr8
   obj:/lib/ld-2.5.so
}

{
   <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
}

# Issues with ubuntu Hardy, same crack as for previous ubuntus
{
   <tls leak generic ubuntu hardy x86>
   Memcheck:Leak
   fun:calloc
   obj:*
   fun:_dl_allocate_tls
   fun:pthread_create@@*
   obj:/usr/lib/libgthread*
   fun:g_thread_*
}

# I've made this version generic, so that it covers future modifications
# of library names
{
   <tls leak generic>
   Memcheck:Leak
   fun:calloc
   obj:*
   fun:_dl_allocate_tls
   fun:pthread_create@@*
   fun:g_thread_*
}

# series of invalid read of size 4 in g_module_open for ubuntu
# hardy x86/32bit
{
   <invalid read of size 4 within <g_module_open>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
   fun:gst_plugin_load_*
}

{
   <invalid read of size 4 within <g_module_open>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
   fun:gst_plugin_load_*
}

{
   <invalid read of size 4 within <g_module_open>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
   fun:gst_plugin_load_*
}

{
   <invalid read of size 4 within <g_module_open>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
   fun:gst_plugin_load_*
}

{
   <invalid read of size 4 within <g_module_open>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
   fun:gst_plugin_load*
}

{
   <invalid read of size 4 within <g_module_open>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libc-2.7.so
   fun:_dl_sym
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libdl-2.7.so
   fun:dlsym
   fun:g_module_symbol
   fun:g_module_open
   fun:gst_plugin_load_*
}

# series of invalid read of size 8 in g_module_open for ubuntu
# hardy x86/64bit
{
   <invalid read of size 8 within <g_module_open>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
}

{
   <invalid read of size 8 within <g_module_open>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
}

{
   <invalid read of size 8 within <g_module_open>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
}

{
   <invalid read of size 8 within <g_module_open>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
}

{
   <invalid read of size 8 within <g_module_open>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
}

{
   <invalid read of size 8 within <g_module_open>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   fun:dlopen
   fun:g_module_open
}

{
   <invalid read of size 8 within <g_module_open>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/libdl-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libdl-2.7.so
   fun:dlsym
   fun:g_module_symbol
   fun:g_module_open
}

{
   <GLib caching>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
   fun:__nss_lookup_function
   obj:/lib/tls/i686/cmov/libc-2.7.so
   fun:__nss_passwd_lookup
   fun:getpwnam_r
}

{
   <GLib caching>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
   fun:__nss_lookup_function
   obj:/lib/tls/i686/cmov/libc-2.7.so
   fun:__nss_passwd_lookup
   fun:getpwnam_r
}

{
   <GLib caching>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
   fun:__nss_lookup_function
   obj:/lib/tls/i686/cmov/libnss_compat-2.7.so
   fun:_nss_compat_getpwnam_r
   fun:getpwnam_r
}

{
   <GLib caching>
   Memcheck:Addr4
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/tls/i686/cmov/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
   fun:__nss_lookup_function
   obj:/lib/tls/i686/cmov/libnss_compat-2.7.so
   fun:_nss_compat_getpwnam_r
   fun:getpwnam_r
}

{
   <GLib caching>
   Memcheck:Addr8
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/ld-2.7.so
   obj:/lib/libc-2.7.so
   obj:/lib/ld-2.7.so
   fun:__libc_dlopen_mode
   fun:__nss_lookup_function
   obj:/lib/libc-2.7.so
   fun:getpwnam_r
}

## 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 property_list in gstffmpegcfg.c
## This list is created in gst_ffmpegcsp_init(), called from
## gst_ffmpegenc_register.
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:g_datalist_id_set_data_full
   fun:gst_ffmpeg_cfg_init
   fun:gst_ffmpegenc_register
   fun:plugin_init
}
{
   <insert a suppression name here>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_slice_alloc
   fun:g_datalist_id_set_data_full
   fun:g_param_spec_set_qdata_full
   fun:gst_ffmpeg_cfg_init
   fun:gst_ffmpegenc_register
   fun:plugin_init
}


{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:gst_ffmpeg_cfg_init
   fun:gst_ffmpegenc_register
}

## 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
}

## Leak/overreads with glibc-2.10

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:do_sym
   fun:dlsym_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlsym
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:do_sym
   fun:dlsym_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlsym
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen*
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_relocate_object
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen*
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_check_map_versions
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen*
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen*
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen*
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_check_map_versions
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen*
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_map_object*
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen*
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_map_object*
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen*
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_check_caller
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen*
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_check_caller
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen*
}

{
   <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 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_fini
   fun:__run_exit_handlers
   fun:exit
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_fini
   fun:__run_exit_handlers
   fun:exit
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_sort_fini
   fun:_dl_fini
   fun:__run_exit_handlers
   fun:exit
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_sort_fini
   fun:_dl_fini
   fun:__run_exit_handlers
   fun:exit
}

# glibc-2.10 dl overreads
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_fixup
   fun:_dl_runtime_resolve
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_fixup
   fun:_dl_runtime_resolve
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_lookup_symbol_x
   fun:_dl_fixup
   fun:_dl_runtime_resolve
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_lookup_symbol_x
   fun:_dl_fixup
   fun:_dl_runtime_resolve
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:call_init
   fun:_dl_init
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_init
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:do_lookup_x
   fun:_dl_lookup_symbol_x
   fun:_dl_relocate_object
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:do_lookup_x
   fun:_dl_lookup_symbol_x
   fun:_dl_relocate_object
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_lookup_symbol_x
   fun:_dl_relocate_object
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_relocate_object
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:do_lookup_x
   fun:_dl_lookup_symbol_x
   fun:_dl_relocate_object
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:do_lookup_x
   fun:_dl_lookup_symbol_x
   fun:_dl_relocate_object
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_check_map_versions
   fun:_dl_check_all_versions
   fun:version_check_doit
   fun:_dl_receive_error
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_check_map_versions
   fun:_dl_check_all_versions
   fun:version_check_doit
   fun:_dl_receive_error
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_check_all_versions
   fun:version_check_doit
   fun:_dl_receive_error
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_check_all_versions
   fun:version_check_doit
   fun:_dl_receive_error
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_check_map_versions
   fun:_dl_check_all_versions
   fun:version_check_doit
   fun:_dl_receive_error
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:_dl_check_map_versions
   fun:_dl_check_all_versions
   fun:version_check_doit
   fun:_dl_receive_error
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:init_tls
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:init_tls
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_map_object_deps
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_map_object_deps
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_protect_relro
   fun:_dl_relocate_object
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:do_lookup_x
   fun:_dl_lookup_symbol_x
   fun:_dl_relocate_object
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_setup_hash
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_new_object
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:_dl_new_object
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:openaux
   fun:_dl_catch_error
   fun:_dl_map_object_deps
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_map_object
   fun:openaux
   fun:_dl_catch_error
   fun:_dl_map_object_deps
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_map_object
   fun:openaux
   fun:_dl_catch_error
   fun:_dl_map_object_deps
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:_dl_map_object
   fun:openaux
   fun:_dl_catch_error
   fun:_dl_map_object_deps
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:open_path
   fun:_dl_map_object
   fun:openaux
   fun:_dl_catch_error
   fun:_dl_map_object_deps
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:open_path
   fun:_dl_map_object
   fun:openaux
   fun:_dl_catch_error
   fun:_dl_map_object_deps
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_new_object
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_new_object
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_new_object
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_name_match_p
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:*
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_name_match_p
   fun:_dl_check_map_versions
   fun:_dl_check_all_versions
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:*
   fun:do_lookup_x
   fun:_dl_lookup_symbol_x
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:do_lookup_x
   fun:_dl_lookup_symbol_x
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:do_lookup_x
   fun:_dl_lookup_symbol_x
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:do_lookup_x
   fun:_dl_lookup_symbol_x
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:do_lookup_x
   fun:_dl_lookup_symbol_x
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_name_match_p
   fun:_dl_map_object
   fun:dl_open_worker
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_name_match_p
   fun:_dl_map_object
   fun:dl_open_worker
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_name_match_p
   fun:_dl_map_object
   fun:dl_open_worker
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:_dl_name_match_p
   fun:_dl_map_object
   fun:dl_open_worker
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_lookup_symbol_x
   fun:_dl_relocate_object
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_lookup_symbol_x
   fun:_dl_relocate_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:*
   fun:_dl_check_map_versions
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_check_map_versions
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:*
   fun:_dl_check_map_versions
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:_dl_check_map_versions
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:openaux
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_name_match_p
   fun:_dl_map_object
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_close_worker
   fun:_dl_close
   fun:_dl_catch_error
   fun:dlerror_run
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_close_worker
   fun:_dl_close
   fun:_dl_catch_error
   fun:dlerror_run
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:_dl_close_worker
   fun:_dl_close
   fun:_dl_catch_error
   fun:dlerror_run
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_close_worker
   fun:_dl_close
   fun:_dl_catch_error
   fun:dlerror_run
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:fillin_rpath
   fun:_dl_init_paths
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:fillin_rpath
   fun:_dl_init_paths
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:fillin_rpath
   fun:_dl_init_paths
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:fillin_rpath
   fun:_dl_init_paths
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_map_object
   fun:map_doit
   fun:_dl_catch_error
   fun:do_preload
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_map_object
   fun:map_doit
   fun:_dl_catch_error
   fun:do_preload
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Param
   open(filename)
   fun:open
   fun:open_verify
   fun:_dl_map_object
   fun:map_doit
   fun:_dl_catch_error
   fun:do_preload
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Param
   stat(file_name)
   fun:_xstat
   fun:open_path
   fun:_dl_map_object
   fun:openaux
   fun:_dl_catch_error
   fun:_dl_map_object_deps
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_catch_error
   fun:_dl_map_object_deps
   fun:dl_open_worker
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:_dl_map_object_deps
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_map_object_deps
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:*
   fun:_dl_map_object_deps
   fun:dl_main
}

# glibc-2.10 tls issues
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:init_tls
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:init_tls
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:*
   fun:init_tls
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:*
   fun:init_tls
   fun:dl_main
}

{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:_dl_allocate_tls_init
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:_dl_allocate_tls_init
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Cond
   fun:*
   fun:_dl_allocate_tls_init
   fun:dl_main
}
{
   <glibc-2.10 overreads/conditionals>
   Memcheck:Value8
   fun:*
   fun:_dl_allocate_tls_init
   fun:dl_main
}

{
   <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
}
# GLib caching tmp/home directories (glibc-2.10 variants)
{
   <glibc-2.10 GLIB leaks>
   Memcheck:Cond
   fun:*
   fun:dl_open_worker
   fun:*
   fun:*
   fun:*
   fun:_dl_catch_error
   fun:dlerror_run
   fun:*
   fun:__nss_lookup_function
   fun:__nss_lookup
   fun:getpwnam*
}
{
   <glibc-2.10 GLIB leaks>
   Memcheck:Value8
   fun:*
   fun:dl_open_worker
   fun:*
   fun:*
   fun:*
   fun:_dl_catch_error
   fun:dlerror_run
   fun:*
   fun:__nss_lookup_function
   fun:__nss_lookup
   fun:getpwnam*
}
{
   <glibc-2.10 GLIB leaks>
   Memcheck:Cond
   fun:dl_open_worker
   fun:*
   fun:*
   fun:do_dlopen
   fun:*
   fun:dlerror_run
   fun:*
   fun:__nss_lookup_function
   fun:__nss_lookup
   fun:getpwnam*
}
{
   <glibc-2.10 GLIB leaks>
   Memcheck:Value8
   fun:dl_open_worker
   fun:*
   fun:*
   fun:do_dlopen
   fun:*
   fun:dlerror_run
   fun:*
   fun:__nss_lookup_function
   fun:__nss_lookup
   fun:getpwnam*
}

{
   <glibc-2.10 GLIB leaks>
   Memcheck:Value8
   fun:_dl_add_to_slotinfo
   fun:dl_main
}
{
   <glibc-2.10 GLIB leaks>
   Memcheck:Param
   open(filename)
   fun:open
   fun:open_verify
   fun:open_path
   fun:_dl_map_object
}



# GModule issues with glibc-2.10
{
   <glibc-2.10 GLIB leaks>
   Memcheck:Value8
   fun:*
   fun:*
   fun:dlsym
   fun:g_module_symbol
}
{
   <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*
}

{
   <glibc-2.10 GLIB leaks>
   Memcheck:Value8
   fun:*
   fun:*
   fun:dlopen*
   fun:g_module_open
}
{
   <glibc-2.10 GLIB leaks>
   Memcheck:Value8
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:dlsym
   fun:g_module_symbol
}

{
   <glibc-2.10 GLIB leaks>
   Memcheck:Value8
   fun:*
   fun:*
   fun:*
   fun:*
   fun:*
   fun:dlopen*
   fun:g_module_open
}

# 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
}

# glibc 2.11 conditional
{
   <glibc-2.11 conditional>
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
   obj:/lib64/ld-2.11.so
}

# glibc 2.11 Leak

{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
}

{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   fun:_dl_*
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
}

{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   fun:_dl_*
   fun:_dl_*
   fun:_dl_*
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
}

{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:_dl_*
   fun:openaux
   fun:_dl_catch_error
   fun:_dl_map_object_deps
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
}

{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:_dl_map_object
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
}

{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   fun:_dl_new_object
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
   fun:openaux
   fun:_dl_catch_error
   fun:_dl_map_object_deps
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
}

{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   fun:*alloc
   fun:*
   fun:_dl_*
   fun:_dl_*
   fun:_dl_*
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:dlopen_doit
   fun:_dl_catch_error
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
}

# 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 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
}
