1 # GLib Valgrind suppressions file
3 # This provides a list of suppressions for all of GLib (including GIO), for all
4 # Valgrind tools (memcheck, drd, helgrind, etc.) for the false positives and
5 # deliberate one-time leaks which GLib causes to be reported when running under
8 # When running an application which links to GLib under Valgrind, you can pass
9 # this suppression file to Valgrind using --suppressions=/path/to/glib-2.0.supp.
11 # http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress
13 # Note that there is currently no way for Valgrind to load this automatically
14 # (https://bugs.kde.org/show_bug.cgi?id=160905), so the best GLib can currently
15 # do is to install this file as part of its development package.
17 # This file should be updated if GLib introduces a new deliberate one-time leak,
18 # or another false race positive in Valgrind: please file bugs at:
20 # https://gitlab.gnome.org/GNOME/glib/issues/new
39 g-tls-backend-gnutls-init
42 fun:g_tls_backend_gnutls_init
50 fun:create_tokens_inlock
51 fun:initialize_module_inlock_reentrant
54 # One-time allocation from libc for getpwnam() results
61 fun:g_local_vfs_parse_name
105 fun:gobject_init_ctor
109 g-type-register-dynamic
113 fun:g_type_register_dynamic
117 g-type-register-static
121 fun:g_type_register_static
125 g-type-register-static-realloc
129 fun:g_type_register_static
133 g-type-register-static-calloc
137 fun:g_type_register_static
141 g-type-add-interface-dynamic
145 fun:g_type_add_interface_dynamic
149 g-type-add-interface-static
153 fun:g_type_add_interface_static
161 fun:g_rand_new_with_seed_array
172 fun:g_rand_new_with_seed_array
174 fun:get_global_random
190 fun:g_hash_table_resize
196 g-type-interface-init
200 fun:type_iface_vtable_base_init_Wm
204 g-type-class-init-calloc
208 fun:g_type_create_instance
210 fun:type_class_init_Wm
216 fun:g_type_create_instance
218 fun:type_class_init_Wm
222 g-io-module-default-singleton-malloc
226 fun:g_type_create_instance
228 fun:_g_io_module_get_default
232 g-io-module-default-singleton-calloc
236 fun:g_type_create_instance
238 fun:_g_io_module_get_default
241 # This one seems to show up sometimes with g_type_create_instance() at the top
242 # of the stack, as well.
244 g-io-module-default-singleton
246 fun:g_type_create_instance
248 fun:_g_io_module_get_default
252 g-io-module-default-singleton-module
258 fun:_g_io_module_get_default
262 g-io-module-default-singleton-name
268 fun:_g_io_module_get_default*
272 g-get-language-names-malloc
276 fun:g_get_language_names
280 g-get-language-names-calloc
284 fun:g_get_language_names
292 fun:g_static_mutex_get_mutex_impl
300 fun:g_system_thread_new
304 g-io-module-default-proxy-resolver-gnome
308 fun:g_proxy_resolver_gnome_init
310 fun:_g_io_module_get_default
313 # One-time getaddrinfo() configuration loading
315 g-threaded-resolver-getaddrinfo-config
319 fun:__resolv_conf_allocate
322 fun:do_lookup_by_name
325 # memcheck checks that the third argument to ioctl() is a valid pointer, but
326 # some ioctls use that argument as an integer
328 ioctl-with-non-pointer-param
332 fun:btrfs_reflink_with_progress
337 drd:ConflictingAccess
341 g-private-get-helgrind
349 drd:ConflictingAccess
353 g-private-set-helgrind
359 g-type-construct-free
360 drd:ConflictingAccess
361 fun:g_type_free_instance
364 g-type-construct-free-helgrind
366 fun:g_type_free_instance
371 drd:ConflictingAccess
375 g-variant-unref-helgrind
382 drd:ConflictingAccess
383 fun:_g_main_create_unix_signal_watch
386 g-unix-signals-dispatch
387 drd:ConflictingAccess
389 fun:dispatch_unix_signals*
392 g-unix-signals-dispatch-helgrind
395 fun:dispatch_unix_signals*
399 drd:ConflictingAccess
400 fun:g_unix_signal_watch*
403 g-unix-signals-other-helgrind
405 fun:g_unix_signal_watch*
408 g-unix-signals-handler
409 drd:ConflictingAccess
410 fun:g_unix_signal_handler*
413 g-unix-signals-handler-helgrind
415 fun:g_unix_signal_handler*
418 g-unix-signals-worker
419 drd:ConflictingAccess
423 g-unix-signals-worker-helgrind
430 drd:ConflictingAccess
432 fun:g_wakeup_acknowledge
437 drd:ConflictingAccess
438 fun:g_type_fundamental
441 g-type-fundamental-helgrind
443 fun:g_type_fundamental
446 g-type-class-peek-static
447 drd:ConflictingAccess
448 fun:g_type_class_peek_static
451 g-type-class-peek-static-helgrind
453 fun:g_type_class_peek_static
457 drd:ConflictingAccess
469 g-inet-address-get-type
470 drd:ConflictingAccess
471 fun:g_inet_address_get_type
474 g-inet-address-get-type-helgrind
476 fun:g_inet_address_get_type
479 # From: https://github.com/fredericgermain/valgrind/blob/master/glibc-2.X-drd.supp
482 drd:ConflictingAccess
487 drd:ConflictingAccess
492 drd:ConflictingAccess
496 # GSources do an opportunistic ref count check
498 g-source-set-ready-time
499 drd:ConflictingAccess
500 fun:g_source_set_ready_time
503 g-source-set-ready-time-helgrind
505 fun:g_source_set_ready_time
511 fun:g_source_iter_next
513 fun:g_main_context_iterate
517 g-object-instance-private
518 drd:ConflictingAccess
519 fun:*_get_instance_private
522 g-object-instance-private-helgrind
524 fun:*_get_instance_private
527 # GLib legitimately calls pthread_cond_signal without a mutex held
529 g-task-thread-complete
533 fun:g_task_thread_complete
536 g-task-thread-complete
540 fun:g_task_thread_complete
543 # False positive, but I can't explain how (FIXME)
552 # Real race, but is_cancelled() is an opportunistic function anyway
554 g-cancellable-is-cancelled
556 fun:g_cancellable_is_cancelled
565 fun:g_main_context_unref
572 fun:g_source_*_unlocked
577 fun:g_source_*_internal
582 g_object_real_dispose
584 fun:g_object_real_dispose
592 fun:g_object_new_valist
595 # g_set_user_dirs() deliberately leaks the previous cached g_get_user_*() values.
601 fun:set_str_if_different
605 # g_set_user_dirs() deliberately leaks the previous cached g_get_user_*() values.
611 fun:set_strv_if_different
615 # g_get_system_data_dirs() caches a one-time allocation
617 g_get_system_data_dirs
621 fun:g_build_system_data_dirs
622 fun:g_get_system_data_dirs
625 # g_get_user_data_dir() caches a one-time allocation
631 fun:g_build_user_data_dir
632 fun:g_get_user_data_dir
635 # gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
637 desktop_file_dirs_malloc
641 fun:desktop_file_dirs_lock
644 # gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
646 desktop_file_dirs_realloc
650 fun:desktop_file_dirs_lock
653 # gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
655 desktop_file_dir_unindexed_setup_search
659 fun:desktop_file_dir_unindexed_setup_search
660 fun:desktop_file_dir_unindexed_setup_search
663 # g_io_extension_point_register() caches a one-time allocation global table of @extension_points.
665 g_io_extension_point_register
669 fun:g_io_extension_point_register
672 # g_strerror() caches a one-time allocation global table of @errors.
682 # g_socket_connection_factory_register_type() caches a one-time allocation global table of @connection_types.
684 g_socket_connection_factory_register_type
688 fun:g_socket_connection_factory_register_type
691 # g_dbus_error_quark() never unregisters itself as a GDBusError domain, as it’s always available
697 fun:g_dbus_error_register_error_domain
698 fun:g_dbus_error_quark
701 # Thread-private data allocated once per thread
707 fun:g_private_set_alloc0
710 g_private_set_alloc0-calloc
714 fun:g_private_set_alloc0
717 # Thread-private GMainContext stack
719 g_main_context_push_thread_default
724 fun:g_main_context_push_thread_default
727 # One-time allocations for #GFileInfo attribute cache
729 g_file_info_attribute_cache
733 fun:ensure_attribute_hash
738 g_file_info_attribute_cache2
742 fun:ensure_attribute_hash
747 g_file_info_attribute_cache3
756 g_file_info_attribute_cache4