# Valgrind error suppression file

# ============================= libc ==================================

{
   ld.so initialization + selinux
   Memcheck:Leak
   ...
   fun:_dl_init
   obj:/lib/ld-*.so
}

{
   dlopen initialization, triggered by handle-leak-debug code
   Memcheck:Leak
   ...
   fun:__libc_dlopen_mode
   fun:init
   fun:backtrace
   fun:handle_leak_debug_bt
   fun:dynamic_ensure_handle
   fun:tp_handle_ensure
}

# ============================= GLib ==================================

{
   g_set_prgname copies its argument
   Memcheck:Leak
   ...
   fun:g_set_prgname
}

{
   one g_get_charset per child^Wprocess
   Memcheck:Leak
   ...
   fun:g_get_charset
}

{
   GQuarks can't be freed
   Memcheck:Leak
   ...
   fun:g_quark_from_static_string
}

{
   GQuarks can't be freed
   Memcheck:Leak
   ...
   fun:g_quark_from_string
}

{
   interned strings can't be freed
   Memcheck:Leak
   ...
   fun:g_intern_string
}

{
   interned strings can't be freed
   Memcheck:Leak
   ...
   fun:g_intern_static_string
}

{
   shared global default g_main_context
   Memcheck:Leak
   ...
   fun:g_main_context_new
   fun:g_main_context_default
}

{
   GTest initialization
   Memcheck:Leak
   ...
   fun:g_test_init
   fun:main
}

{
   GTest admin
   Memcheck:Leak
   ...
   fun:g_test_add_vtable
}

{
   GTest pseudorandomness
   Memcheck:Leak
   ...
   fun:g_rand_new_with_seed_array
   fun:test_run_seed
   ...
   fun:g_test_run
}

{
   GSLice initialization
   Memcheck:Leak
   ...
   fun:g_malloc0
   fun:g_slice_init_nomessage
   fun:g_slice_alloc
}

# ============================= GObject ===============================

{
   g_type_init
   Memcheck:Leak
   ...
   fun:g_type_init
}

{
   g_type_register_static
   Memcheck:Leak
   ...
   fun:g_type_register_static
}

# ============================= dbus-glib =============================

{
   dbus-glib, https://bugs.freedesktop.org/show_bug.cgi?id=14125
   Memcheck:Addr4
   fun:g_hash_table_foreach
   obj:/usr/lib/libdbus-glib-1.so.2.1.0
   fun:g_object_run_dispose
}

{
   registering marshallers is permanent
   Memcheck:Leak
   ...
   fun:dbus_g_object_register_marshaller_array
   fun:dbus_g_object_register_marshaller
}

{
   dbus-glib specialized GTypes are permanent
   Memcheck:Leak
   ...
   fun:dbus_g_type_specialized_init
}

{
   libdbus shared connection
   Memcheck:Leak
   ...
   fun:dbus_g_bus_get
}

{
   dbus-gobject registrations aren't freed unless we fall off the bus
   Memcheck:Leak
   ...
   fun:g_slist_append
   fun:dbus_g_connection_register_g_object
}

{
   DBusGProxy slots aren't freed unless we fall off the bus
   Memcheck:Leak
   ...
   fun:dbus_connection_allocate_data_slot
   ...
   fun:dbus_g_proxy_constructor
}

{
   error registrations are for life, not just for Christmas
   Memcheck:Leak
   ...
   fun:dbus_g_error_domain_register
}

# ============================= telepathy-glib ========================

{
   tp_dbus_daemon_constructor @daemons once per DBusConnection
   Memcheck:Leak
   ...
   fun:g_slice_alloc
   fun:tp_dbus_daemon_constructor
}

{
   tp_proxy_subclass_add_error_mapping refs the enum
   Memcheck:Leak
   ...
   fun:g_type_class_ref
   fun:tp_proxy_subclass_add_error_mapping
}

{
   tp_proxy_or_subclass_hook_on_interface_add never frees its list
   Memcheck:Leak
   ...
   fun:tp_proxy_or_subclass_hook_on_interface_add
}

{
   tp_dbus_daemon_constructor filter not freed til we fall off the bus
   Memcheck:Leak
   ...
   fun:dbus_connection_add_filter
   fun:tp_dbus_daemon_constructor
}

# ============================= unclassified ==========================

{
   creating param specs in tp_proxy_class_intern_init
   Memcheck:Leak
   fun:memalign
   fun:posix_memalign
   fun:slab_allocator_alloc_chunk
   fun:g_slice_alloc
   fun:g_slice_alloc0
   fun:g_type_create_instance
   fun:g_param_spec_internal
   fun:g_param_spec_string
}

{
   ld.so initialization on glibc 2.9
   Memcheck:Cond
   fun:_dl_relocate_object
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
   obj:/lib/ld-2.9.so
}

{
   ld.so initialization on glibc 2.9
   Memcheck:Cond
   fun:strlen
   fun:_dl_init_paths
   fun:dl_main
   fun:_dl_sysdep_start
   fun:_dl_start
   obj:/lib/ld-2.9.so
}
