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
206 fun:g_type_create_instance
208 fun:type_class_init_Wm
212 g-io-module-default-singleton-malloc
216 fun:g_type_create_instance
218 fun:_g_io_module_get_default
222 g-io-module-default-singleton-module
228 fun:_g_io_module_get_default
232 g-io-module-default-singleton-name
238 fun:_g_io_module_get_default*
242 g-get-language-names-malloc
246 fun:g_get_language_names
250 g-get-language-names-calloc
254 fun:g_get_language_names
262 fun:g_static_mutex_get_mutex_impl
270 fun:g_system_thread_new
274 g-io-module-default-proxy-resolver-gnome
278 fun:g_proxy_resolver_gnome_init
280 fun:_g_io_module_get_default
283 # One-time getaddrinfo() configuration loading
285 g-threaded-resolver-getaddrinfo-config
289 fun:__resolv_conf_allocate
292 fun:do_lookup_by_name
295 # memcheck checks that the third argument to ioctl() is a valid pointer, but
296 # some ioctls use that argument as an integer
298 ioctl-with-non-pointer-param
302 fun:btrfs_reflink_with_progress
307 drd:ConflictingAccess
311 g-private-get-helgrind
319 drd:ConflictingAccess
323 g-private-set-helgrind
329 g-type-construct-free
330 drd:ConflictingAccess
331 fun:g_type_free_instance
334 g-type-construct-free-helgrind
336 fun:g_type_free_instance
341 drd:ConflictingAccess
345 g-variant-unref-helgrind
352 drd:ConflictingAccess
353 fun:_g_main_create_unix_signal_watch
356 g-unix-signals-dispatch
357 drd:ConflictingAccess
359 fun:dispatch_unix_signals*
362 g-unix-signals-dispatch-helgrind
365 fun:dispatch_unix_signals*
369 drd:ConflictingAccess
370 fun:g_unix_signal_watch*
373 g-unix-signals-other-helgrind
375 fun:g_unix_signal_watch*
378 g-unix-signals-handler
379 drd:ConflictingAccess
380 fun:g_unix_signal_handler*
383 g-unix-signals-handler-helgrind
385 fun:g_unix_signal_handler*
388 g-unix-signals-worker
389 drd:ConflictingAccess
393 g-unix-signals-worker-helgrind
400 drd:ConflictingAccess
402 fun:g_wakeup_acknowledge
407 drd:ConflictingAccess
408 fun:g_type_fundamental
411 g-type-fundamental-helgrind
413 fun:g_type_fundamental
416 g-type-class-peek-static
417 drd:ConflictingAccess
418 fun:g_type_class_peek_static
421 g-type-class-peek-static-helgrind
423 fun:g_type_class_peek_static
427 drd:ConflictingAccess
439 g-inet-address-get-type
440 drd:ConflictingAccess
441 fun:g_inet_address_get_type
444 g-inet-address-get-type-helgrind
446 fun:g_inet_address_get_type
449 # From: https://github.com/fredericgermain/valgrind/blob/master/glibc-2.X-drd.supp
452 drd:ConflictingAccess
457 drd:ConflictingAccess
462 drd:ConflictingAccess
466 # GSources do an opportunistic ref count check
468 g-source-set-ready-time
469 drd:ConflictingAccess
470 fun:g_source_set_ready_time
473 g-source-set-ready-time-helgrind
475 fun:g_source_set_ready_time
481 fun:g_source_iter_next
483 fun:g_main_context_iterate
487 g-object-instance-private
488 drd:ConflictingAccess
489 fun:*_get_instance_private
492 g-object-instance-private-helgrind
494 fun:*_get_instance_private
497 # GLib legitimately calls pthread_cond_signal without a mutex held
499 g-task-thread-complete
503 fun:g_task_thread_complete
506 g-task-thread-complete
510 fun:g_task_thread_complete
513 # False positive, but I can't explain how (FIXME)
522 # Real race, but is_cancelled() is an opportunistic function anyway
524 g-cancellable-is-cancelled
526 fun:g_cancellable_is_cancelled
535 fun:g_main_context_unref
542 fun:g_source_*_unlocked
547 fun:g_source_*_internal
552 g_object_real_dispose
554 fun:g_object_real_dispose
562 fun:g_object_new_valist
565 # g_set_user_dirs() deliberately leaks the previous cached g_get_user_*() values.
571 fun:set_str_if_different
575 # g_set_user_dirs() deliberately leaks the previous cached g_get_user_*() values.
581 fun:set_strv_if_different
585 # g_get_system_data_dirs() caches a one-time allocation
587 g_get_system_data_dirs
591 fun:g_build_system_data_dirs
592 fun:g_get_system_data_dirs
595 # g_get_user_data_dir() caches a one-time allocation
601 fun:g_build_user_data_dir
602 fun:g_get_user_data_dir
605 # gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
607 desktop_file_dirs_malloc
611 fun:desktop_file_dirs_lock
614 # gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
616 desktop_file_dirs_realloc
620 fun:desktop_file_dirs_lock
623 # gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
625 desktop_file_dir_unindexed_setup_search
629 fun:desktop_file_dir_unindexed_setup_search
630 fun:desktop_file_dir_unindexed_setup_search
633 # g_io_extension_point_register() caches a one-time allocation global table of @extension_points.
635 g_io_extension_point_register
639 fun:g_io_extension_point_register
642 # g_strerror() caches a one-time allocation global table of @errors.
652 # g_socket_connection_factory_register_type() caches a one-time allocation global table of @connection_types.
654 g_socket_connection_factory_register_type
658 fun:g_socket_connection_factory_register_type
661 # g_dbus_error_quark() never unregisters itself as a GDBusError domain, as it’s always available
667 fun:g_dbus_error_register_error_domain
668 fun:g_dbus_error_quark
671 # Thread-private data allocated once per thread
677 fun:g_private_set_alloc0
680 # Thread-private GMainContext stack
682 g_main_context_push_thread_default
687 fun:g_main_context_push_thread_default
690 # One-time allocations for #GFileInfo attribute cache
692 g_file_info_attribute_cache
696 fun:ensure_attribute_hash
701 g_file_info_attribute_cache2
705 fun:ensure_attribute_hash
710 g_file_info_attribute_cache3
719 g_file_info_attribute_cache4