From f56a153efebe08908fbc5ca8364cbc1945de6877 Mon Sep 17 00:00:00 2001 From: Phaedrus Leeds Date: Mon, 15 Nov 2021 16:13:42 -0800 Subject: [PATCH] tests: Update glib.supp for GLib 2.64.6 --- tests/glib.supp | 1455 ++++++++++++++++++++++++++++------------------- 1 file changed, 872 insertions(+), 583 deletions(-) diff --git a/tests/glib.supp b/tests/glib.supp index 561cb2a2..a732aa51 100644 --- a/tests/glib.supp +++ b/tests/glib.supp @@ -1,670 +1,959 @@ -# Based on the libhif supressions -{ - gobject_init_1 - Memcheck:Leak - ... - fun:gobject_init -} -{ - g_type_register_static_1 - Memcheck:Leak - ... - fun:g_type_register_static -} -{ - g_type_register_fundamental - Memcheck:Leak - ... - fun:g_type_register_fundamental -} -{ - g_type_register_dynamic_1 - Memcheck:Leak - ... - fun:g_type_register_dynamic -} -{ - g_type_init_with_debug_flags - Memcheck:Leak - ... - fun:g_type_init_with_debug_flags -} -{ - g_type_class_ref_1 - Memcheck:Leak - ... - fun:type_iface_vtable_base_init_Wm - ... - fun:g_type_class_ref -} -{ - g_type_class_ref_2 - Memcheck:Leak - ... - fun:type_class_init_Wm - ... - fun:g_type_class_ref -} -{ - g_type_add_interface_static - Memcheck:Leak - ... - fun:g_type_add_interface_static -} -{ - g_param_spec_internal - Memcheck:Leak - ... - fun:g_type_class_ref - fun:g_type_create_instance - fun:g_param_spec_internal -} -{ - g_param_spec_enum - Memcheck:Leak - ... - fun:g_type_class_ref - fun:g_param_spec_enum -} -{ - g_param_spec_flags - Memcheck:Leak - ... - fun:g_type_class_ref - fun:g_param_spec_flags -} -{ - g_quark_from_static_string - Memcheck:Leak - ... - fun:g_quark_from_static_string -} -{ - g_quark_from_string - Memcheck:Leak - ... - fun:g_quark_from_string -} -{ - g_value_register_transform_func - Memcheck:Leak - ... - fun:g_value_register_transform_func -} -{ - test_run_seed - Memcheck:Leak - ... - fun:g_rand_new_with_seed_array - fun:test_run_seed - ... - fun:g_test_run_suite -} -{ - g_test_init - Memcheck:Leak - ... - fun:g_rand_new_with_seed_array - ... - fun:g_test_init +# 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-task-thread-pool-init + Memcheck:Leak + match-leak-kinds:possible,reachable,definite + fun:malloc + ... + fun:g_thread_new + ... + fun:g_task_thread_pool_init +} + +{ + 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_intern_static_string - Memcheck:Leak - ... - fun:g_intern_static_string + g-threaded-resolver-getaddrinfo-config + Memcheck:Leak + match-leak-kinds:reachable,definite + 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 { - g_main_context_push_thread_default - Memcheck:Leak - ... - fun:g_queue_new - fun:g_main_context_push_thread_default + ioctl-with-non-pointer-param + Memcheck:Param + ioctl(generic) + fun:ioctl + fun:btrfs_reflink_with_progress } + { - g_main_context_push_thread_default_inlined - Memcheck:Leak - ... - fun:g_slice_alloc0 - fun:g_main_context_push_thread_default + g-private-get + drd:ConflictingAccess + fun:g_private_get } { - g_dbus_error_register_error - Memcheck:Leak - ... - fun:g_dbus_error_register_error + g-private-get-helgrind + Helgrind:Race + fun:g_private_get } + + { - g_param_spec_pool_insert - Memcheck:Leak - ... - fun:g_param_spec_pool_insert + g-private-set + drd:ConflictingAccess + fun:g_private_set } { - g_main_context_default - Memcheck:Leak - ... - fun:g_main_context_default + g-private-set-helgrind + Helgrind:Race + fun:g_private_set } + { - g_main_context_check - Memcheck:Leak - ... - fun:g_ptr_array_add - fun:g_main_context_check + g-type-construct-free + drd:ConflictingAccess + fun:g_type_free_instance } { - g_test_run_suite - Memcheck:Leak - ... - fun:g_slist_copy - fun:g_test_run_suite_internal - fun:g_test_run_suite + g-type-construct-free-helgrind + Helgrind:Race + fun:g_type_free_instance } + { - g_dbus_interface_info_cache_build - Memcheck:Leak - ... - fun:g_dbus_interface_info_cache_build + g-variant-unref + drd:ConflictingAccess + fun:g_variant_unref } { - g_cancellable_push_current - Memcheck:Leak - ... - fun:thread_memory_from_self - ... - fun:g_cancellable_push_current + g-variant-unref-helgrind + Helgrind:Race + fun:g_variant_unref } + { - g-io-module-default-singleton-malloc - Memcheck:Leak - ... - fun:g_type_create_instance - ... - fun:_g_io_module_get_default + g-unix-signals-main + drd:ConflictingAccess + fun:_g_main_create_unix_signal_watch } { - g-io-module-default-singleton-malloc2 - Memcheck:Leak - fun:malloc - ... - fun:_g_io_module_get_default + g-unix-signals-dispatch + drd:ConflictingAccess + ... + fun:dispatch_unix_signals* } { - g_io_scheduler_push_job - Memcheck:Leak - ... - fun:init_scheduler - fun:g_once_impl - fun:g_io_scheduler_push_job + g-unix-signals-dispatch-helgrind + Helgrind:Race + ... + fun:dispatch_unix_signals* } { - g_io_scheduler_push_job_2 - Memcheck:Leak - ... - fun:g_system_thread_new - ... - fun:g_io_scheduler_push_job + g-unix-signals-other + drd:ConflictingAccess + fun:g_unix_signal_watch* } { - g_bus_get_sync__available_connections - Memcheck:Leak - ... - fun:g_hash_table_new - fun:initable_init - fun:g_initable_init - fun:g_bus_get_sync + g-unix-signals-other-helgrind + Helgrind:Race + fun:g_unix_signal_watch* } { - g_socket_connection_factory_register_type - Memcheck:Leak - ... - fun:g_socket_connection_factory_register_type + g-unix-signals-handler + drd:ConflictingAccess + fun:g_unix_signal_handler* } { - g_test_add_vtable - Memcheck:Leak - ... - fun:g_test_add_vtable + g-unix-signals-handler-helgrind + Helgrind:Race + fun:g_unix_signal_handler* } { - g_mutex_lock - Memcheck:Leak - ... - fun:g_mutex_impl_new - fun:g_mutex_get_impl - fun:g_mutex_lock + g-unix-signals-worker + drd:ConflictingAccess + fun:glib_worker_main } { - g_thread_self - Memcheck:Leak - ... - fun:g_thread_self + g-unix-signals-worker-helgrind + Helgrind:Race + fun:glib_worker_main } + { - g_rec_mutex_lock - Memcheck:Leak - ... - fun:g_rec_mutex_impl_new - fun:g_rec_mutex_get_impl - fun:g_rec_mutex_lock + g-wakeup-acknowledge + drd:ConflictingAccess + fun:read + fun:g_wakeup_acknowledge } + { - test_case_run - Memcheck:Leak - ... - fun:g_malloc0 - fun:test_case_run - ... - fun:g_test_run_suite + g-type-fundamental + drd:ConflictingAccess + fun:g_type_fundamental } { - g_get_charset - Memcheck:Leak - ... - fun:g_get_charset + g-type-fundamental-helgrind + Helgrind:Race + fun:g_type_fundamental } { - g_test_run_suite__timer_new - Memcheck:Leak - ... - fun:g_timer_new - fun:test_case_run - ... - fun:g_test_run_suite + g-type-class-peek-static + drd:ConflictingAccess + fun:g_type_class_peek_static } { - g_test_run_suite__timer_new2 - Memcheck:Leak - ... - fun:g_timer_new - fun:test_case_run_suite_internal - ... - fun:g_test_run_suite + g-type-class-peek-static-helgrind + Helgrind:Race + fun:g_type_class_peek_static } { - g_test_run_suite__strconcat - Memcheck:Leak - ... - fun:g_strconcat - fun:test_case_run - ... - fun:g_test_run_suite - fun:g_test_run + g-type-is-a + drd:ConflictingAccess + ... + fun:g_type_is_a } { - g_type_interface_add_prerequisite - Memcheck:Leak - ... - fun:g_type_interface_add_prerequisite + g-type-is-a-helgrind + Helgrind:Race + ... + fun:g_type_is_a } + { - - Memcheck:Leak - ... - fun:g_slist_copy - fun:g_test_run_suite_internal - ... - fun:g_test_run_suite + g-inet-address-get-type + drd:ConflictingAccess + fun:g_inet_address_get_type } { - g_set_prgname - Memcheck:Leak - ... - fun:g_set_prgname + 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 { - g_test_run_suite__strconcat_2 - Memcheck:Leak - ... - fun:g_strconcat - fun:g_test_run_suite_internal + drd-libc-stdio + drd:ConflictingAccess + obj:*/lib*/libc-* } { - g_test_run_suite__strdup - Memcheck:Leak - ... - fun:g_strdup - fun:g_test_run_suite_internal + drd-libc-recv + drd:ConflictingAccess + fun:recv } { - g_private_get - Memcheck:Leak - ... - fun:g_private_get + drd-libc-send + drd:ConflictingAccess + fun:send } + +# GSources do an opportunistic ref count check { - g_private_set - Memcheck:Leak - ... - fun:g_private_set + g-source-set-ready-time + drd:ConflictingAccess + fun:g_source_set_ready_time } { - g_private_set_alloc0 - Memcheck:Leak - ... - fun:g_private_set_alloc0 + g-source-set-ready-time-helgrind + Helgrind:Race + fun:g_source_set_ready_time } + { - g_static_mutex_get_mutex_impl - Memcheck:Leak - ... - fun:g_static_mutex_get_mutex_impl + g-source-iter-next + Helgrind:Race + fun:g_source_iter_next + fun:g_main_context_* + fun:g_main_context_iterate } + { - g_variant_type_info_unref - Memcheck:Leak - ... - fun:g_hash_table_remove - fun:g_variant_type_info_unref + g-object-instance-private + drd:ConflictingAccess + fun:*_get_instance_private } { - g_rw_lock_reader_lock - Memcheck:Leak - ... - fun:g_rw_lock_impl_new - fun:g_rw_lock_get_impl - fun:g_rw_lock_reader_lock + g-object-instance-private-helgrind + Helgrind:Race + fun:*_get_instance_private } + +# GLib legitimately calls pthread_cond_signal without a mutex held { - g_child_watch_finalize__rt_sigaction - Memcheck:Param - rt_sigaction(act->sa_flags) - fun:__libc_sigaction - ... - fun:g_child_watch_finalize + g-task-thread-complete + drd:CondErr + ... + fun:g_cond_signal + fun:g_task_thread_complete } { - g_dbus_worker_new - Memcheck:Leak - fun:calloc - ... - fun:_g_dbus_worker_new + g-task-thread-complete + Helgrind:Misc + ... + fun:g_cond_signal + fun:g_task_thread_complete } + +# False positive, but I can't explain how (FIXME) { - gdbus_shared_thread_func - Memcheck:Leak - match-leak-kinds: definite - ... - fun:g_malloc - ... - fun:gdbus_shared_thread_func + g-task-cond + Helgrind:Misc + ... + fun:g_cond_clear + fun:g_task_finalize } + +# Real race, but is_cancelled() is an opportunistic function anyway { - g_task_start_task_thread - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - fun:g_malloc - fun:g_slice_alloc - fun:g_slice_alloc0 - ... - fun:g_thread_pool_push - fun:g_task_start_task_thread + g-cancellable-is-cancelled + Helgrind:Race + fun:g_cancellable_is_cancelled } + +# False positive { - g_get_language_names - Memcheck:Leak - match-leak-kinds: definite - fun:calloc - fun:g_malloc0 - fun:g_get_language_names + g-main-context-cond + Helgrind:Misc + ... + fun:g_cond_clear + fun:g_main_context_unref } + +# False positives { - g-get-language-names-malloc - Memcheck:Leak - fun:malloc - ... - fun:g_get_language_names_with_category + g-source-unlocked + Helgrind:Race + fun:g_source_*_unlocked } { - g-get-language-names-malloc2 - Memcheck:Leak - fun:calloc - ... - fun:g_get_language_names_with_category -} -{ - g_get_filename_charsets - Memcheck:Leak - match-leak-kinds: definite - ... - fun:g_get_filename_charsets - fun:g_filename_display_name -} -{ - g_main_current_source - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - fun:g_malloc - ... - fun:g_main_current_source - fun:g_task_return - fun:g_task_thread_pool_thread -} -{ - g_once_init_enter - Memcheck:Leak - match-leak-kinds: definite - ... - fun:g_once_init_enter -} -{ - g_child_watch_source_new - Memcheck:Leak - match-leak-kinds: definite - ... - fun:g_thread_new - ... - fun:g_child_watch_source_new -} -{ - continue_writing_in_idle_cb - Memcheck:Leak - match-leak-kinds: definite - ... - fun:g_task_new - ... - fun:continue_writing_in_idle_cb - fun:g_main_context_dispatch -} -{ - g_main_current_source - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - ... - fun:g_main_current_source -} -{ - g_thread_pool_push - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - ... - fun:g_thread_pool_push -} -{ - leak_test_dbus_dispose - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - ... - fun:g_main_loop_run - fun:g_test_dbus_down -} -{ - leak_test_dbus_down - Memcheck:Leak - match-leak-kinds: definite - fun:calloc - fun:g_malloc0 - fun:g_main_loop_new - fun:g_test_dbus_down -} -{ - leak_socket_client_connect - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - fun:g_malloc - fun:g_slice_alloc - fun:g_slice_alloc0 - fun:g_socket_client_connect_async - fun:g_socket_client_connect_to_uri_async -} -{ - leak_signal_handlers_disconnect_matched - Memcheck:Leak - match-leak-kinds: definite - fun:calloc - fun:g_malloc0 - ... - fun:g_slice_alloc - ... - fun:g_signal_handlers_disconnect_matched -} -{ - g_tls_connection_gnutls_init_priorities - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - fun:g_malloc - fun:g_strdup - fun:g_tls_connection_gnutls_init_priorities -} -{ - g_tls_connection_gnutls_heisenbug_likely_same_as_above - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - fun:g_malloc - fun:g_strdup - ... - fun:g_tls_client_connection_new -} -{ - g_unix_signal_add_full - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - fun:g_malloc - ... - fun:g_thread_new - ... - fun:g_unix_signal_add_full -} -{ - glib_worker_1 - Memcheck:Leak - ... - fun:glib_worker_main -} -{ - glib_dispatch_1 - Memcheck:Leak - fun:malloc - fun:g_malloc - ... - fun:get_dispatch - fun:g_main_dispatch -} -{ - glib_dispatch_2 - Memcheck:Leak - fun:calloc - fun:g_malloc0 - ... - fun:get_dispatch - fun:g_main_current_source -} -{ - glib_dlopen_1 - Memcheck:Leak - fun:calloc - fun:_dlerror_run - fun:dlopen* - ... - fun:g_module_open -} -{ - libc_tls - Memcheck:Leak - fun:calloc - fun:_dl_allocate_tls - fun:pthread_create* -} -{ - soup_callback_1 - Memcheck:Leak - fun:malloc - fun:g_malloc - fun:g_source_set_callback - fun:soup_add_completion_reffed - fun:soup_session_real_kick_queue -} -{ - gio_namespace_cache_leak_ns_info - Memcheck:Leak - match-leak-kinds: definite - fun:calloc - fun:g_malloc0 - fun:_lookup_namespace -} -{ - gio_namespace_cache_leak_ns_name - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - fun:g_malloc - fun:g_strdup - fun:_lookup_namespace -} -{ - gio_extension_points_global - Memcheck:Leak - match-leak-kinds: definite - fun:calloc - fun:g_malloc0 - fun:g_io_extension_point_register -} -{ - glib_dbus_thread_private - Memcheck:Leak - match-leak-kinds: definite - fun:calloc - fun:g_malloc0 - fun:g_private_set_alloc0 - ... - fun:gdbus_shared_thread_func -} -{ - dbus_shared_socket - Memcheck:Leak - match-leak-kinds: definite - ... - fun:g_socket_create_source - ... - fun:gdbus_shared_thread_func -} -{ - polkit_agent_leak - Memcheck:Leak - match-leak-kinds: definite - fun:calloc - fun:g_malloc0 - fun:g_dbus_connection_register_object - ... - fun:g_thread_proxy -} -{ - polkit_agent_leak2 - Memcheck:Leak - match-leak-kinds: definite - fun:calloc - fun:g_malloc0 - fun:g_private_set_alloc0 - ... - fun:g_thread_proxy + 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:definite,reachable + fun:malloc + ... + fun:g_private_set_alloc0 +} +{ + g_private_set_alloc0-calloc + Memcheck:Leak + match-leak-kinds:definite,reachable + fun:calloc + ... + fun:g_private_set_alloc0 +} + +# Thread-private GMainContext stack +{ + g_main_context_push_thread_default + Memcheck:Leak + match-leak-kinds:definite,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_* }