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

{
   <tls>
   Memcheck:Leak
   fun:calloc
   fun:allocate_dtv
   fun:_dl_allocate_tls
}

# 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
}
{
   <alsa leak snd_config_searcha_hooks>
   Memcheck:Leak
   fun:*alloc
   fun:_dl_close_worker
   ...
   fun:snd_config_searcha_hooks
}

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

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

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