# GLib Valgrind suppressions file
#
# This provides a list of suppressions for all of GLib (including GIO), for all
# Valgrind tools (memcheck, drd, helgrind, etc.) for the false positives and
# deliberate one-time leaks which GLib causes to be reported when running under
# Valgrind.
#
# When running an application which links to GLib under Valgrind, you can pass
# this suppression file to Valgrind using --suppressions=/path/to/glib-2.0.supp.
#
# http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress
#
# Note that there is currently no way for Valgrind to load this automatically
# (https://bugs.kde.org/show_bug.cgi?id=160905), so the best GLib can currently
# do is to install this file as part of its development package.
#
# This file should be updated if GLib introduces a new deliberate one-time leak,
# or another false race positive in Valgrind: please file bugs at:
#
# https://gitlab.gnome.org/GNOME/glib/issues/new

{
	gnutls-init-calloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:gtls_gnutls_init
}

{
	gnutls-init-realloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:realloc
	...
	fun:gtls_gnutls_init
}

{
	g-tls-backend-gnutls-init
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:g_once_impl
	fun:g_tls_backend_gnutls_init
}

{
	p11-tokens-init
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:create_tokens_inlock
	fun:initialize_module_inlock_reentrant
}

# One-time allocation from libc for getpwnam() results
{
	g-local-vfs-getpwnam
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:getpwnam
	fun:g_local_vfs_parse_name
}

{
	glib-init-malloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_quark_init
	...
	fun:glib_init_ctor
}

{
	glib-init-calloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_quark_init
	...
	fun:glib_init_ctor
}

{
	gobject-init-malloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:gobject_init_ctor
}

{
	gobject-init-realloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:realloc
	...
	fun:gobject_init_ctor
}

{
	gobject-init-calloc
	Memcheck:Leak
	match-leak-kinds:possible,reachable
	fun:calloc
	...
	fun:gobject_init_ctor
}

{
	g-type-register-dynamic
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_type_register_dynamic
}

{
	g-type-register-static
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_type_register_static
}

{
	g-type-register-static-realloc
	Memcheck:Leak
	match-leak-kinds:possible,reachable
	fun:realloc
	...
	fun:g_type_register_static
}

{
	g-type-register-static-calloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_type_register_static
}

{
	g-type-register-fundamental
	Memcheck:Leak
	match-leak-kinds:possible,reachable
	fun:malloc
	...
	fun:g_type_register_fundamental
}

{
	g-type-register-fundamental-calloc
	Memcheck:Leak
	match-leak-kinds:possible,reachable
	fun:calloc
	...
	fun:g_type_register_fundamental
}

{
	g-type-add-interface-dynamic
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_type_add_interface_dynamic
}

{
	g-type-add-interface-static
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_type_add_interface_static
}

{
	g-type-add-interface-static-realloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:realloc
	...
	fun:g_type_add_interface_static
}

{
	g-type-add-interface-static-calloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_type_add_interface_static
}

{
	g-test-rand-init
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_rand_new_with_seed_array
	fun:test_run_seed
	...
	fun:g_test_run
}

{
	g-test-rand-init2
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_rand_new_with_seed_array
	...
	fun:get_global_random
	...
	fun:g_test_init
}

{
	g-quark-table-new
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:g_hash_table_new
	...
	fun:quark_new
}

{
	g-quark-table-resize
	Memcheck:Leak
	match-leak-kinds:reachable
	...
	fun:g_hash_table_resize
	...
	fun:quark_new
}

{
	g-type-interface-init
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:type_iface_vtable_base_init_Wm
}

{
	g-type-class-init-calloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:type_class_init_Wm
}

{
	g-type-class-init
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:g_type_create_instance
	...
	fun:type_class_init_Wm
}

{
	g-object-do-class-init-signals
	Memcheck:Leak
	match-leak-kinds:reachable
	...
	fun:g_signal_new
	...
	fun:type_class_init_Wm
}

{
	g-type-prerequisites
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:realloc
	...
	fun:type_iface_add_prerequisite_W
}

{
	g-type-add-interface-check
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_type_add_interface_check
	...
	fun:type_class_init_Wm
}

{
	g-type-add-interface-check-realloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:realloc
	...
	fun:g_type_add_interface_check
	...
	fun:type_class_init_Wm
}

{
	g-object-class-install-property
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:validate_and_install_class_property
	...
	fun:type_class_init_Wm
}

{
	g-param-spec-pool-new
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_param_spec_pool_new
	...
	fun:type_class_init_Wm
}

# weak_locations_lock in gobject.c
{
	g-weak-ref-lock
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_rw_lock_get_impl
	...
	fun:g_weak_ref_set
}

{
	g-object-base-class-init-construct-pproperties
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_slist_copy
	fun:g_object_base_class_init
	fun:type_class_init_Wm
}

{
        g-type-class-ref
        Memcheck:Leak
        fun:calloc
        ...
        fun:type_class_init_Wm
        ...
        fun:g_type_class_ref
}

{
	g-io-module-default-singleton-malloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_type_create_instance
	...
	fun:_g_io_module_get_default
}

{
	g-io-module-default-singleton-calloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_type_create_instance
	...
	fun:_g_io_module_get_default
}

# This one seems to show up sometimes with g_type_create_instance() at the top
# of the stack, as well.
{
	g-io-module-default-singleton
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:g_type_create_instance
	...
	fun:_g_io_module_get_default
}

{
	g-io-module-default-singleton-module
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_module_open
	...
	fun:_g_io_module_get_default
}

{
	g-io-module-default-singleton-name
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_strdup
	...
	fun:_g_io_module_get_default*
}

{
	g-get-language-names-malloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_get_language_names
}

{
	g-get-language-names-calloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_get_language_names
}

{
	g-static-mutex
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_static_mutex_get_mutex_impl
}

{
	g-system-thread-init
	Memcheck:Leak
	match-leak-kinds:possible,reachable
	fun:calloc
	...
	fun:g_system_thread_new
}

{
	g-io-module-default-proxy-resolver-gnome
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_proxy_resolver_gnome_init
	...
	fun:_g_io_module_get_default
}

# One-time getaddrinfo() configuration loading
{
	g-threaded-resolver-getaddrinfo-config
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:__resolv_conf_allocate
	...
	fun:getaddrinfo
	fun:do_lookup_by_name
}

# memcheck checks that the third argument to ioctl() is a valid pointer, but
# some ioctls use that argument as an integer
{
	ioctl-with-non-pointer-param
	Memcheck:Param
	ioctl(generic)
	fun:ioctl
	fun:btrfs_reflink_with_progress
}

{
	g-private-get
	drd:ConflictingAccess
	fun:g_private_get
}
{
	g-private-get-helgrind
	Helgrind:Race
	fun:g_private_get
}


{
	g-private-set
	drd:ConflictingAccess
	fun:g_private_set
}
{
	g-private-set-helgrind
	Helgrind:Race
	fun:g_private_set
}

{
	g-type-construct-free
	drd:ConflictingAccess
	fun:g_type_free_instance
}
{
	g-type-construct-free-helgrind
	Helgrind:Race
	fun:g_type_free_instance
}

{
	g-variant-unref
	drd:ConflictingAccess
	fun:g_variant_unref
}
{
	g-variant-unref-helgrind
	Helgrind:Race
	fun:g_variant_unref
}

{
	g-unix-signals-main
	drd:ConflictingAccess
	fun:_g_main_create_unix_signal_watch
}
{
	g-unix-signals-dispatch
	drd:ConflictingAccess
	...
	fun:dispatch_unix_signals*
}
{
	g-unix-signals-dispatch-helgrind
	Helgrind:Race
	...
	fun:dispatch_unix_signals*
}
{
	g-unix-signals-other
	drd:ConflictingAccess
	fun:g_unix_signal_watch*
}
{
	g-unix-signals-other-helgrind
	Helgrind:Race
	fun:g_unix_signal_watch*
}
{
	g-unix-signals-handler
	drd:ConflictingAccess
	fun:g_unix_signal_handler*
}
{
	g-unix-signals-handler-helgrind
	Helgrind:Race
	fun:g_unix_signal_handler*
}
{
	g-unix-signals-worker
	drd:ConflictingAccess
	fun:glib_worker_main
}
{
	g-unix-signals-worker-helgrind
	Helgrind:Race
	fun:glib_worker_main
}

{
	g-wakeup-acknowledge
	drd:ConflictingAccess
	fun:read
	fun:g_wakeup_acknowledge
}

{
	g-type-fundamental
	drd:ConflictingAccess
	fun:g_type_fundamental
}
{
	g-type-fundamental-helgrind
	Helgrind:Race
	fun:g_type_fundamental
}
{
	g-type-class-peek-static
	drd:ConflictingAccess
	fun:g_type_class_peek_static
}
{
	g-type-class-peek-static-helgrind
	Helgrind:Race
	fun:g_type_class_peek_static
}
{
	g-type-is-a
	drd:ConflictingAccess
	...
	fun:g_type_is_a
}
{
	g-type-is-a-helgrind
	Helgrind:Race
	...
	fun:g_type_is_a
}

{
	g-inet-address-get-type
	drd:ConflictingAccess
	fun:g_inet_address_get_type
}
{
	g-inet-address-get-type-helgrind
	Helgrind:Race
	fun:g_inet_address_get_type
}

# From: https://github.com/fredericgermain/valgrind/blob/master/glibc-2.X-drd.supp
{
	drd-libc-stdio
	drd:ConflictingAccess
	obj:*/lib*/libc-*
}
{
	drd-libc-recv
	drd:ConflictingAccess
	fun:recv
}
{
	drd-libc-send
	drd:ConflictingAccess
	fun:send
}

# GSources do an opportunistic ref count check
{
	g-source-set-ready-time
	drd:ConflictingAccess
	fun:g_source_set_ready_time
}
{
	g-source-set-ready-time-helgrind
	Helgrind:Race
	fun:g_source_set_ready_time
}

{
	g-source-iter-next
	Helgrind:Race
	fun:g_source_iter_next
	fun:g_main_context_*
	fun:g_main_context_iterate
}

{
	g-object-instance-private
	drd:ConflictingAccess
	fun:*_get_instance_private
}
{
	g-object-instance-private-helgrind
	Helgrind:Race
	fun:*_get_instance_private
}

# GLib legitimately calls pthread_cond_signal without a mutex held
{
	g-task-thread-complete
	drd:CondErr
	...
	fun:g_cond_signal
	fun:g_task_thread_complete
}
{
	g-task-thread-complete
	Helgrind:Misc
	...
	fun:g_cond_signal
	fun:g_task_thread_complete
}

# False positive, but I can't explain how (FIXME)
{
	g-task-cond
	Helgrind:Misc
	...
	fun:g_cond_clear
	fun:g_task_finalize
}

# Real race, but is_cancelled() is an opportunistic function anyway
{
	g-cancellable-is-cancelled
	Helgrind:Race
	fun:g_cancellable_is_cancelled
}

# False positive
{
	g-main-context-cond
	Helgrind:Misc
	...
	fun:g_cond_clear
	fun:g_main_context_unref
}

# False positives
{
	g-source-unlocked
	Helgrind:Race
	fun:g_source_*_unlocked
}
{
	g-source-internal
	Helgrind:Race
	fun:g_source_*_internal
}

# False positive
{
	g_object_real_dispose
	Helgrind:Race
	fun:g_object_real_dispose
}

# False positive
{
	g_object_new_valist
	Helgrind:Race
	...
	fun:g_object_new_valist
}

# g_set_user_dirs() deliberately leaks the previous cached g_get_user_*() values.
# These will not all be reachable on exit.
{
	g_set_user_dirs_str
	Memcheck:Leak
	match-leak-kinds:definite,reachable
	fun:malloc
	...
	fun:set_str_if_different
	fun:g_set_user_dirs
}

# g_set_user_dirs() deliberately leaks the previous cached g_get_user_*() values.
# These will not all be reachable on exit.
{
	g_set_user_dirs_strv
	Memcheck:Leak
	match-leak-kinds:definite,reachable
	fun:malloc
	...
	fun:set_strv_if_different
	fun:g_set_user_dirs
}

# g_get_system_data_dirs() caches a one-time allocation
{
	g_get_system_data_dirs
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_build_system_data_dirs
	fun:g_get_system_data_dirs
}

# g_get_user_data_dir() caches a one-time allocation
{
	g_get_user_data_dir
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:realloc
	...
	fun:g_build_user_data_dir
	fun:g_get_user_data_dir
}

# gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
{
	desktop_file_dirs_malloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:desktop_file_dirs_lock
}

# gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
{
	desktop_file_dirs_realloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:realloc
	...
	fun:desktop_file_dirs_lock
}

# gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
{
	desktop_file_dir_unindexed_setup_search
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:desktop_file_dir_unindexed_setup_search
	fun:desktop_file_dir_unindexed_setup_search
}

# g_io_extension_point_register() caches a one-time allocation global table of @extension_points.
{
	g_io_extension_point_register
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_io_extension_point_register
}

# g_strerror() caches a one-time allocation global table of @errors.
{
	g_strerror
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_locale_to_utf8
	fun:g_strerror
}

# g_socket_connection_factory_register_type() caches a one-time allocation global table of @connection_types.
{
	g_socket_connection_factory_register_type
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_socket_connection_factory_register_type
}

# g_dbus_error_quark() never unregisters itself as a GDBusError domain, as it’s always available
{
	g_dbus_error_quark
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_dbus_error_register_error_domain
	fun:g_dbus_error_quark
}

# Thread-private data allocated once per thread
{
	g_private_set_alloc0
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_private_set_alloc0
}
{
	g_private_set_alloc0-calloc
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:g_private_set_alloc0
}

# Thread-private GMainContext stack
{
	g_main_context_push_thread_default
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:g_queue_new
	fun:g_main_context_push_thread_default
}

# One-time allocations for #GFileInfo attribute cache
{
	g_file_info_attribute_cache
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:ensure_attribute_hash
	...
	fun:g_file_*
}
{
	g_file_info_attribute_cache2
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:ensure_attribute_hash
	...
	fun:g_file_*
}
{
	g_file_info_attribute_cache3
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:malloc
	...
	fun:lookup_namespace
	...
	fun:g_file_*
}
{
	g_file_info_attribute_cache4
	Memcheck:Leak
	match-leak-kinds:reachable
	fun:calloc
	...
	fun:lookup_namespace
	...
	fun:g_file_*
}
