Files
cproof/prof.supp
jabber.developer2 8e8d715734
Some checks failed
CI Code / Check spelling (pull_request) Successful in 21s
CI Code / Check coding style (pull_request) Successful in 37s
CI Code / Linux (arch) (pull_request) Failing after 22m22s
CI Code / Linux (debian) (pull_request) Successful in 1h8m49s
CI Code / Linux (ubuntu) (pull_request) Failing after 25m28s
refactor(tests): improve functional test documentation and cleanup
- Add detailed documentation about test isolation in functionaltests.c
- Improve comments in proftest.c: buffer size explanation, stabber sync TODO
- Add reference to stabber issue #1 for stbbr_wait_stopped() API
- Document prof_output_regex() usage rationale in test_muc.c
- Enhance ping_server test comments for clarity
- Update CONTRIBUTING.md: fix function names (prof_output_regex, prof_timeout)
- Remove redundant commented-out test configurations from ci-build.sh
- Remove obsolete stabber recv suppressions from prof.supp (issue fixed)
- Add clear explanation for disabled assertion in test_chat_session.c
- Add comment explaining /connect max args in cmd_defs.c
2026-01-05 18:29:41 +03:00

3064 lines
47 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# profanity suppressions file
#
# I recommend to use valgrind like this:
# G_DEBUG=gc-friendly G_SLICE=always-malloc valgrind --leak-check=full --log-file=out ./profanity
#
# This file is a combination of our own rules and
# * the glib2 suppressions file that usually can be found at /usr/share/glib-2.0/valgrind/glib.supp
# * python suppressions file from https://github.com/python/cpython/blob/main/Misc/valgrind-python.supp
#
# ============================================
# Functional tests suppressions (stabber/pthread)
# ============================================
{
stabber_pthread_create
Memcheck:Leak
match-leak-kinds: possible
fun:calloc
...
fun:allocate_dtv
fun:_dl_allocate_tls
...
fun:pthread_create*
...
fun:server_run
...
}
{
stabber_server_run
Memcheck:Leak
match-leak-kinds: possible
fun:calloc
...
fun:pthread_create*
...
obj:*/libstabber*
...
}
{
glib_time_zone_cache
Memcheck:Leak
match-leak-kinds: reachable
...
fun:g_time_zone_new*
...
}
{
glib_time_zone_local
Memcheck:Leak
match-leak-kinds: reachable
...
fun:g_strdup
...
fun:g_time_zone_new_identifier
fun:g_time_zone_new_local
...
}
{
glib_date_time_format
Memcheck:Leak
match-leak-kinds: reachable
...
fun:g_date_time_format
...
}
{
glib_date_time_format_locale
Memcheck:Leak
match-leak-kinds: reachable
fun:*alloc
...
obj:*/libglib*
...
fun:g_date_time_format
...
}
# ============================================
# Original suppressions
# ============================================
{
_dl_init
Memcheck:Leak
...
fun:_dl_init
...
}
{
libfreetype
Memcheck:Leak
...
obj:*/libfreetype*
...
obj:*/libpango*
...
}
{
libfontconfig
Memcheck:Leak
...
obj:*/libfontconfig*
}
{
libncurses
Memcheck:Leak
...
obj:*/libncurses*
...
}
{
otrl_init
Memcheck:Leak
...
fun:otrl_init
...
}
# gtk
{
gtk_init_check
Memcheck:Leak
...
fun:gtk_init_check
...
}
{
gtk_module_init
Memcheck:Leak
...
fun:gtk_module_init
...
}
{
gtk_widget_get_preferred_height
Memcheck:Leak
...
fun:gtk_widget_get_preferred_height
...
}
{
gtk_main_iteration_do
Memcheck:Leak
...
fun:gtk_main_iteration_do
...
}
{
tray_enable
Memcheck:Leak
...
fun:g_object_new
...
fun:tray_enable
...
}
# glib/gtk
{
glib
Memcheck:Leak
...
fun:start_thread
fun:clone
}
{
g_date_time_new_now_ variants
Memcheck:Leak
...
fun:g_time_zone_new_identifier
...
fun:g_date_time_new_now_*
...
}
{
g_date_time_new_from_ variants
Memcheck:Leak
...
fun:g_time_zone_new_identifier
...
fun:g_date_time_new_from_*
...
}
{
g_strerror/g_hash_table_new_full
Memcheck:Leak
...
fun:g_hash_table_new_full
fun:g_strerror
...
}
{
g_strerror/g_hash_table_insert
Memcheck:Leak
...
fun:g_hash_table_insert
fun:g_strerror
...
}
{
g_intern_string
Memcheck:Leak
...
fun:g_intern_string
...
}
{
g_rw_lock_reader_lock
Memcheck:Leak
...
fun:g_rw_lock_reader_lock
...
}
{
g_type_create_instance
Memcheck:Leak
...
fun:g_type_create_instance
}
{
g_object_new
Memcheck:Leak
...
fun:g_object_new
}
{
libgtk
Memcheck:Leak
...
obj:*/libgtk*
}
{
libgdk
Memcheck:Leak
...
obj:*/libgdk*
}
{
libgobject
Memcheck:Leak
...
obj:*/libgobject*
}
# fontconfig
{
FcConfigSubstituteWithPat
Memcheck:Leak
...
fun:FcConfigSubstituteWithPat
...
}
# gcrypt initialization
{
gcry_rngcsprng_randomize
Memcheck:Leak
fun:malloc
...
fun:omemo_crypto_init
...
}
{
gcry_mpi_scan
Memcheck:Leak
...
fun:gcry_mpi_scan
...
}
# libreadline related
{
leak readline
Memcheck:Leak
...
fun:readline
}
{
leak add_history
Memcheck:Leak
...
fun:add_history
}
{
leak rl_make_bare_keymap
Memcheck:Leak
...
fun:rl_make_bare_keymap
}
{
leak rl_add_funmap_entry
Memcheck:Leak
...
fun:rl_add_funmap_entry
}
{
leak rl_initialize
Memcheck:Leak
...
fun:rl_initialize
}
# Python related
{
Handle PyMalloc confusing valgrind (possibly leaked)
Memcheck:Leak
...
fun:_PyObject_GC_New
}
{
Handle PyMalloc confusing valgrind (possibly leaked)
Memcheck:Leak
...
fun:PyType_Ready
}
{
Handle PyMalloc confusing valgrind (possibly leaked)
Memcheck:Leak
...
fun:Py_InitializeEx
fun:python_env_init
}
{
Custom Inittab can only be cleaned by calling PyMain, which we don't do
Memcheck:Leak
...
fun:PyImport_ExtendInittab
fun:PyImport_AppendInittab
fun:python_init_prof
...
}
# Specific for unit test issues
{
Libc TLS allocation
Memcheck:Leak
...
fun:allocate_dtv
fun:_dl_allocate_tls
...
fun:unique_filename_from_url
...
}
# AUTO-GENERATED START
# 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
}
{
glib-init-calloc
Memcheck:Leak
match-leak-kinds:reachable
fun:calloc
...
fun:g_quark_init
}
{
gobject-init-malloc
Memcheck:Leak
match-leak-kinds:reachable
fun:malloc
...
fun:gobject_init*
}
{
gobject-init-realloc
Memcheck:Leak
match-leak-kinds:reachable
fun:realloc
...
fun:gobject_init*
}
{
gobject-init-calloc
Memcheck:Leak
match-leak-kinds:possible,reachable
fun:calloc
...
fun:gobject_init*
}
{
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:possible,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:possible,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-rand-init2
Memcheck:Leak
match-leak-kinds:reachable
fun:calloc
...
fun:g_rand_new_with_seed_array
...
fun:get_global_random
}
{
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-type-class-ref-inlined
Memcheck:Leak
fun:calloc
...
fun:UnknownInlinedFun
...
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-io-module-default-singleton-weak-ref
Memcheck:Leak
fun:calloc
...
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-get-language_names-with-category-malloc
Memcheck:Leak
match-leak-kinds:possible,reachable,definite
fun:malloc
...
fun:g_get_language_names_with_category
}
{
g-get-language_names-with-category-calloc
Memcheck:Leak
match-leak-kinds:possible,reachable,definite
fun:calloc
...
fun:g_get_language_names_with_category
}
{
g-get-language_names-with-category-realloc
Memcheck:Leak
match-leak-kinds:possible,reachable,definite
fun:realloc
...
fun:g_get_language_names_with_category
}
{
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-system-thread-init-malloc
Memcheck:Leak
match-leak-kinds:possible,reachable,definite
fun:malloc
...
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-task-thread-pool-new-full
Memcheck:Leak
match-leak-kinds:possible,reachable,definite
fun:malloc
...
fun:g_thread_new
...
fun:g_thread_pool_new_full
}
{
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,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
{
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/HEAD/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_unset_cached_tmp_dir() deliberately leaks the previous cached g_get_tmp_dir() values.
# These will not all be reachable on exit.
{
g_get_tmp_dir_test_init
Memcheck:Leak
match-leak-kinds:definite,reachable
fun:malloc
...
fun:g_get_tmp_dir
...
fun:g_test_init
}
# g_get_tmp_dir() caches a one-time allocation
{
g_get_tmp_dir
Memcheck:Leak
match-leak-kinds:definite,reachable
fun:malloc
...
fun:g_get_tmp_dir
}
# 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
}
# g_get_home_dir() caches a one-time allocation
{
g_get_home_dir
Memcheck:Leak
match-leak-kinds:reachable
fun:malloc
...
fun:g_build_home_dir
fun:g_get_home_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
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_user_data_dir
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
...
fun:g_build_user_data_dir
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_filename
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
...
fun:g_build_filename
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_home_dir
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
...
fun:g_build_home_dir
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_path
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
...
fun:g_build_path
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_system_config_dirs
Memcheck:Leak
match-leak-kinds:definite
fun:realloc
...
fun:g_build_system_config_dirs
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_system_data_dir
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
...
fun:g_build_system_data_dir
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_system_data_dirs
Memcheck:Leak
match-leak-kinds:definite
fun:realloc
...
fun:g_build_system_data_dirs
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_user_cache_dir
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
...
fun:g_build_user_cache_dir
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_user_config_dir
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
...
fun:g_build_user_config_dir
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_user_data_dir
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
...
fun:g_build_user_data_dir
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_user_runtime_dir
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
...
fun:g_build_user_runtime_dir
}
#gutils.c caches system and user dirs and may need to replace them during tests.
{
g_build_user_state_dir
Memcheck:Leak
match-leak-kinds:definite
fun:malloc
...
fun:g_build_user_state_dir
}
# 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 its 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
}
# g_win32_registry_get_os_dirs_w*() caches an array of strings that is allocated only once.
{
g_win32_registry_get_os_dirs
Memcheck:Leak
match-leak-kinds:reachable,definite
fun:malloc
...
fun:g_win32_registry_get_os_dirs*
}
# 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
}
# Keys for thread-private data
{
g_private_key
Memcheck:Leak
match-leak-kinds:reachable
fun:malloc
fun:g_private_impl_new
}
# 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_*
}
# Cached charset
{
g_get_charset
Memcheck:Leak
match-leak-kinds:reachable
fun:malloc
...
fun:g_get_charset
}
{
g_get_charset_calloc
Memcheck:Leak
match-leak-kinds:reachable
fun:calloc
...
fun:g_get_charset
}
# Global unused thread queue
{
g_thread_pool_unused_thread_queue
Memcheck:Leak
match-leak-kinds:reachable
fun:malloc
...
fun:g_async_queue_new_full
...
fun:g_thread_pool_new
}
# One-time program name storage
{
g_set_prgname
Memcheck:Leak
match-leak-kinds:reachable
fun:malloc
...
fun:g_set_prgname
}
# Error domains hash
{
g_error_init
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
...
fun:g_hash_table_new_full
fun:g_error_init
}
# Error domain static registration
{
g_error_domain_register_static
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
...
fun:g_hash_table_insert
fun:error_domain_register
fun:g_error_domain_register_static
}
{
new_quark
Memcheck:Leak
match-leak-kinds:reachable
fun:malloc
...
fun:g_hash_table_insert
fun:quark_new
}
{
xdg_mime_init_malloc
Memcheck:Leak
fun:malloc
...
fun:xdg_mime_init
}
{
xdg_mime_init_calloc
Memcheck:Leak
fun:calloc
...
fun:xdg_mime_init
}
# Python Valgrind .supp start
# taken from https://github.com/python/cpython/blob/main/Misc/valgrind-python.supp
#
# This is a valgrind suppression file that should be used when using valgrind.
#
# Here's an example of running valgrind:
#
# cd python/dist/src
# valgrind --tool=memcheck --suppressions=Misc/valgrind-python.supp \
# ./python -E ./Lib/test/regrtest.py -u gui,network
#
# You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER
# to use the preferred suppressions with address_in_range.
#
# If you do not want to recompile Python, you can uncomment
# suppressions for _PyObject_Free and _PyObject_Realloc.
#
# See Misc/README.valgrind for more information.
# all tool names: Addrcheck,Memcheck,cachegrind,helgrind,massif
{
ADDRESS_IN_RANGE/Invalid read of size 4
Memcheck:Addr4
fun:address_in_range
}
{
ADDRESS_IN_RANGE/Invalid read of size 4
Memcheck:Value4
fun:address_in_range
}
{
ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64)
Memcheck:Value8
fun:address_in_range
}
{
ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value
Memcheck:Cond
fun:address_in_range
}
#
# Leaks (including possible leaks)
# Hmmm, I wonder if this masks some real leaks. I think it does.
# Will need to fix that.
#
{
Suppress leaking the GIL after a fork.
Memcheck:Leak
fun:malloc
fun:PyThread_allocate_lock
fun:PyEval_ReInitThreads
}
{
Suppress leaking the autoTLSkey. This looks like it shouldn't leak though.
Memcheck:Leak
fun:malloc
fun:PyThread_create_key
fun:_PyGILState_Init
fun:Py_InitializeEx
fun:Py_Main
}
{
Hmmm, is this a real leak or like the GIL?
Memcheck:Leak
fun:malloc
fun:PyThread_ReInitTLS
}
{
Handle PyMalloc confusing valgrind (possibly leaked)
Memcheck:Leak
fun:realloc
fun:_PyObject_GC_Resize
fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING
}
{
Handle PyMalloc confusing valgrind (possibly leaked)
Memcheck:Leak
fun:malloc
fun:_PyObject_GC_New
fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING
}
{
Handle PyMalloc confusing valgrind (possibly leaked)
Memcheck:Leak
fun:malloc
fun:_PyObject_GC_NewVar
fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING
}
#
# Leaks: dlopen() called without dlclose()
#
{
dlopen() called without dlclose()
Memcheck:Leak
fun:malloc
fun:malloc
fun:strdup
fun:_dl_load_cache_lookup
}
{
dlopen() called without dlclose()
Memcheck:Leak
fun:malloc
fun:malloc
fun:strdup
fun:_dl_map_object
}
{
dlopen() called without dlclose()
Memcheck:Leak
fun:malloc
fun:*
fun:_dl_new_object
}
{
dlopen() called without dlclose()
Memcheck:Leak
fun:calloc
fun:*
fun:_dl_new_object
}
{
dlopen() called without dlclose()
Memcheck:Leak
fun:calloc
fun:*
fun:_dl_check_map_versions
}
#
# Non-python specific leaks
#
{
Handle pthread issue (possibly leaked)
Memcheck:Leak
fun:calloc
fun:allocate_dtv
fun:_dl_allocate_tls_storage
fun:_dl_allocate_tls
}
{
Handle pthread issue (possibly leaked)
Memcheck:Leak
fun:memalign
fun:_dl_allocate_tls_storage
fun:_dl_allocate_tls
}
###{
### ADDRESS_IN_RANGE/Invalid read of size 4
### Memcheck:Addr4
### fun:_PyObject_Free
###}
###
###{
### ADDRESS_IN_RANGE/Invalid read of size 4
### Memcheck:Value4
### fun:_PyObject_Free
###}
###
###{
### ADDRESS_IN_RANGE/Use of uninitialised value of size 8
### Memcheck:Addr8
### fun:_PyObject_Free
###}
###
###{
### ADDRESS_IN_RANGE/Use of uninitialised value of size 8
### Memcheck:Value8
### fun:_PyObject_Free
###}
###
###{
### ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value
### Memcheck:Cond
### fun:_PyObject_Free
###}
###{
### ADDRESS_IN_RANGE/Invalid read of size 4
### Memcheck:Addr4
### fun:_PyObject_Realloc
###}
###
###{
### ADDRESS_IN_RANGE/Invalid read of size 4
### Memcheck:Value4
### fun:_PyObject_Realloc
###}
###
###{
### ADDRESS_IN_RANGE/Use of uninitialised value of size 8
### Memcheck:Addr8
### fun:_PyObject_Realloc
###}
###
###{
### ADDRESS_IN_RANGE/Use of uninitialised value of size 8
### Memcheck:Value8
### fun:_PyObject_Realloc
###}
###
###{
### ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value
### Memcheck:Cond
### fun:_PyObject_Realloc
###}
###
### All the suppressions below are for errors that occur within libraries
### that Python uses. The problems to not appear to be related to Python's
### use of the libraries.
###
{
Generic ubuntu ld problems
Memcheck:Addr8
obj:/lib/ld-2.4.so
obj:/lib/ld-2.4.so
obj:/lib/ld-2.4.so
obj:/lib/ld-2.4.so
}
{
Generic gentoo ld problems
Memcheck:Cond
obj:/lib/ld-2.3.4.so
obj:/lib/ld-2.3.4.so
obj:/lib/ld-2.3.4.so
obj:/lib/ld-2.3.4.so
}
{
DBM problems, see test_dbm
Memcheck:Param
write(buf)
fun:write
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
fun:dbm_close
}
{
DBM problems, see test_dbm
Memcheck:Value8
fun:memmove
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
fun:dbm_store
fun:dbm_ass_sub
}
{
DBM problems, see test_dbm
Memcheck:Cond
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
fun:dbm_store
fun:dbm_ass_sub
}
{
DBM problems, see test_dbm
Memcheck:Cond
fun:memmove
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
obj:/usr/lib/libdb1.so.2
fun:dbm_store
fun:dbm_ass_sub
}
{
GDBM problems, see test_gdbm
Memcheck:Param
write(buf)
fun:write
fun:gdbm_open
}
{
Uninitialised byte(s) false alarm, see bpo-35561
Memcheck:Param
epoll_ctl(event)
fun:epoll_ctl
fun:pyepoll_internal_ctl
}
{
ZLIB problems, see test_gzip
Memcheck:Cond
obj:/lib/libz.so.1.2.3
obj:/lib/libz.so.1.2.3
fun:deflate
}
{
Avoid problems w/readline doing a putenv and leaking on exit
Memcheck:Leak
fun:malloc
fun:xmalloc
fun:sh_set_lines_and_columns
fun:_rl_get_screen_size
fun:_rl_init_terminal_io
obj:/lib/libreadline.so.4.3
fun:rl_initialize
}
# Valgrind emits "Conditional jump or move depends on uninitialised value(s)"
# false alarms on GCC builtin strcmp() function. The GCC code is correct.
#
# Valgrind bug: https://bugs.kde.org/show_bug.cgi?id=264936
{
bpo-38118: Valgrind emits false alarm on GCC builtin strcmp()
Memcheck:Cond
fun:PyUnicode_Decode
}
###
### These occur from somewhere within the SSL, when running
### test_socket_sll. They are too general to leave on by default.
###
###{
### somewhere in SSL stuff
### Memcheck:Cond
### fun:memset
###}
###{
### somewhere in SSL stuff
### Memcheck:Value4
### fun:memset
###}
###
###{
### somewhere in SSL stuff
### Memcheck:Cond
### fun:MD5_Update
###}
###
###{
### somewhere in SSL stuff
### Memcheck:Value4
### fun:MD5_Update
###}
# Fedora's package "openssl-1.0.1-0.1.beta2.fc17.x86_64" on x86_64
# See http://bugs.python.org/issue14171
{
openssl 1.0.1 prng 1
Memcheck:Cond
fun:bcmp
fun:fips_get_entropy
fun:FIPS_drbg_instantiate
fun:RAND_init_fips
fun:OPENSSL_init_library
fun:SSL_library_init
fun:init_hashlib
}
{
openssl 1.0.1 prng 2
Memcheck:Cond
fun:fips_get_entropy
fun:FIPS_drbg_instantiate
fun:RAND_init_fips
fun:OPENSSL_init_library
fun:SSL_library_init
fun:init_hashlib
}
{
openssl 1.0.1 prng 3
Memcheck:Value8
fun:_x86_64_AES_encrypt_compact
fun:AES_encrypt
}
#
# All of these problems come from using test_socket_ssl
#
{
from test_socket_ssl
Memcheck:Cond
fun:BN_bin2bn
}
{
from test_socket_ssl
Memcheck:Cond
fun:BN_num_bits_word
}
{
from test_socket_ssl
Memcheck:Value4
fun:BN_num_bits_word
}
{
from test_socket_ssl
Memcheck:Cond
fun:BN_mod_exp_mont_word
}
{
from test_socket_ssl
Memcheck:Cond
fun:BN_mod_exp_mont
}
{
from test_socket_ssl
Memcheck:Param
write(buf)
fun:write
obj:/usr/lib/libcrypto.so.0.9.7
}
{
from test_socket_ssl
Memcheck:Cond
fun:RSA_verify
}
{
from test_socket_ssl
Memcheck:Value4
fun:RSA_verify
}
{
from test_socket_ssl
Memcheck:Value4
fun:DES_set_key_unchecked
}
{
from test_socket_ssl
Memcheck:Value4
fun:DES_encrypt2
}
{
from test_socket_ssl
Memcheck:Cond
obj:/usr/lib/libssl.so.0.9.7
}
{
from test_socket_ssl
Memcheck:Value4
obj:/usr/lib/libssl.so.0.9.7
}
{
from test_socket_ssl
Memcheck:Cond
fun:BUF_MEM_grow_clean
}
{
from test_socket_ssl
Memcheck:Cond
fun:memcpy
fun:ssl3_read_bytes
}
{
from test_socket_ssl
Memcheck:Cond
fun:SHA1_Update
}
{
from test_socket_ssl
Memcheck:Value4
fun:SHA1_Update
}
{
test_buffer_non_debug
Memcheck:Addr4
fun:PyUnicodeUCS2_FSConverter
}
{
test_buffer_non_debug
Memcheck:Addr4
fun:PyUnicode_FSConverter
}
{
wcscmp_false_positive
Memcheck:Addr8
fun:wcscmp
fun:_PyOS_GetOpt
fun:Py_Main
fun:main
}
# Additional suppressions for the unified decimal tests:
{
test_decimal
Memcheck:Addr4
fun:PyUnicodeUCS2_FSConverter
}
{
test_decimal2
Memcheck:Addr4
fun:PyUnicode_FSConverter
}
# Python Valgrind .supp end
# Actual GTK things
{
GtkWidgetClass action GPtrArray
Memcheck:Leak
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_ptr_array_sized_new
fun:g_ptr_array_new
fun:gtk_widget_class_add_action
}
{
GTK media extension gio modules
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_slice_alloc0
fun:g_type_create_instance
fun:g_object_new_internal
fun:g_object_new_with_properties
fun:g_object_new
fun:g_io_module_new
fun:g_io_modules_scan_all_in_directory_with_scope
fun:gtk_media_file_extension_init
}
{
gtk-style-context
Memcheck:Leak
match-leak-kinds: possible
fun:malloc
fun:g_malloc
...
fun:gtk_css_node_declaration_make_writable
...
fun:gtk_style_constructed
}
{
gtk-style-context2
Memcheck:Leak
match-leak-kinds: possible
fun:malloc
fun:g_malloc
...
fun:gtk_css_node_declaration_make_writable_resize
...
fun:gtk_style_constructed
}
# AMD driver
{
radeonsi_dri general
Memcheck:Leak
fun:calloc
...
obj:/usr/lib*/dri/radeonsi_dri.so
}
# mesa driver stuff
{
i965 addr4
Memcheck:Addr4
obj:/usr/lib*/dri/i965_dri.so*
}
{
i965 addr8
Memcheck:Addr8
obj:/usr/lib*/dri/i965_dri.so*
}
{
i965 memcpy
Memcheck:Addr8
fun:memcpy*
obj:/usr/lib*/dri/i965_dri.so*
}
{
i965 memcpy
Memcheck:Addr2
fun:memcpy*
obj:/usr/lib*/dri/i965_dri.so*
}
{
mesa memcmp 8
Memcheck:Addr8
fun:*memcmp*
obj:/usr/lib*/dri/i965_dri.so*
}
{
mesa memcmp 1
Memcheck:Addr1
fun:*memcmp*
obj:/usr/lib*/dri/i965_dri.so*
}
{
mesa memset 8
Memcheck:Addr8
fun:*memset*
obj:/usr/lib*/dri/i965_dri.so
}
{
mesa realpath
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:realpath@@GLIBC_2.3
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_eglInitialize_global_rewrite_ptr
}
{
mesa calloc
Memcheck:Leak
match-leak-kinds: definite
fun:calloc
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_eglInitialize_global_rewrite_ptr
}
{
mesa malloc
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
obj:/usr/lib*/dri/i965_dri.so*
}
{
mesa glReadPixels
Memcheck:Addr16
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_glReadPixels_global_rewrite_ptr
}
{
epoxy glxQueryServerString 1
Memcheck:Leak
fun:malloc
fun:XextAddDisplay
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_glXQueryServerString_global_rewrite_ptr
}
{
epoxy glxQueryServerString 2
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:realpath*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_glXQueryServerString_global_rewrite_ptr
}
{
epoxy glGetTexImage
Memcheck:Addr16
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_glGetTexImage_global_rewrite_ptr
}
# Fontconfig
{
FcFontSetList
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libfontconfig.so*
fun:FcFontSetList
}
{
FcFontRenderPrepare
Memcheck:Leak
match-leak-kinds: definite
fun:realloc
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libfontconfig.so*
fun:FcFontRenderPrepare
}
{
FcDefaultSubstitute
Memcheck:Leak
match-leak-kinds: definite
fun:realloc
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libfontconfig.so*
fun:FcDefaultSubstitute
}
# Pixman
{
pixman_image_composite32
Memcheck:Cond
obj:/usr/lib*/libpixman-1.so*
obj:/usr/lib*/libpixman-1.so*
fun:pixman_image_composite32
}
# Pango
{
pango 1
Memcheck:Leak
match-leak-kinds: definite
fun:realloc
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libcairo.so*
fun:pango_cairo_fc_font_map_fontset_key_substitute
}
{
pango 2
Memcheck:Leak
fun:realloc
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libfontconfig.so*
fun:_cairo_ft_font_options_substitute
}
# GLib
{
glib 1
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_quark_init
}
# Actual GTK things
{
GtkWidgetClass action GPtrArray
Memcheck:Leak
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_ptr_array_sized_new
fun:g_ptr_array_new
fun:gtk_widget_class_add_action
}
{
GIO modules
Memcheck:Leak
match-leak-kinds: definite
fun:calloc
...
fun:_g_io_module_get_default
}
{
GTK media extension gio modules
Memcheck:Leak
match-leak-kinds: definite
fun:calloc
...
fun:g_io_module_new
...
fun:gtk_media_file_extension_init
}
# AMD driver
{
radeonsi_dri general
Memcheck:Leak
fun:calloc
...
obj:/usr/lib*/dri/radeonsi_dri.so
}
{
radeonsi_dri general
Memcheck:Leak
fun:malloc
...
obj:/usr/lib*/dri/radeonsi_dri.so
}
# mesa driver stuff
{
i965 addr4
Memcheck:Addr4
obj:/usr/lib*/dri/i965_dri.so*
}
{
i965 addr8
Memcheck:Addr8
obj:/usr/lib*/dri/i965_dri.so*
}
{
i965 memcpy
Memcheck:Addr8
fun:memcpy*
obj:/usr/lib*/dri/i965_dri.so*
}
{
i965 memcpy
Memcheck:Addr2
fun:memcpy*
obj:/usr/lib*/dri/i965_dri.so*
}
{
mesa memcmp 8
Memcheck:Addr8
fun:*memcmp*
obj:/usr/lib*/dri/i965_dri.so*
}
{
mesa memcmp 1
Memcheck:Addr1
fun:*memcmp*
obj:/usr/lib*/dri/i965_dri.so*
}
{
mesa memset 8
Memcheck:Addr8
fun:*memset*
obj:/usr/lib*/dri/i965_dri.so
}
{
mesa realpath
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:realpath@@GLIBC_2.3
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_eglInitialize_global_rewrite_ptr
}
{
mesa calloc
Memcheck:Leak
match-leak-kinds: definite
fun:calloc
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_eglInitialize_global_rewrite_ptr
}
{
epoxy strncmp
Memcheck:Addr8
fun:strncmp
...
fun:epoxy_eglInitialize_global_rewrite_ptr
}
{
mesa malloc
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
obj:/usr/lib*/dri/i965_dri.so*
}
{
mesa glReadPixels
Memcheck:Addr16
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_glReadPixels_global_rewrite_ptr
}
{
epoxy glxQueryServerString 1
Memcheck:Leak
fun:malloc
fun:XextAddDisplay
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_glXQueryServerString_global_rewrite_ptr
}
{
epoxy glxQueryServerString 2
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:realpath*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_glXQueryServerString_global_rewrite_ptr
}
{
epoxy glGetTexImage
Memcheck:Addr16
obj:*
obj:*
obj:*
obj:*
obj:*
fun:epoxy_glGetTexImage_global_rewrite_ptr
}
# Fontconfig
{
FcFontSetList
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libfontconfig.so*
fun:FcFontSetList
}
{
FcPatternObjectInsertElt
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:FcPatternObjectInsertElt
}
{
FcFontRenderPrepare
Memcheck:Leak
match-leak-kinds: definite
fun:realloc
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libfontconfig.so*
fun:FcFontRenderPrepare
}
{
FcDefaultSubstitute
Memcheck:Leak
match-leak-kinds: definite
fun:realloc
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libfontconfig.so*
fun:FcDefaultSubstitute
}
# Pixman
{
pixman_image_composite32
Memcheck:Cond
obj:/usr/lib*/libpixman-1.so*
obj:/usr/lib*/libpixman-1.so*
fun:pixman_image_composite32
}
# Pango
{
pango 1
Memcheck:Leak
match-leak-kinds: definite
fun:realloc
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libcairo.so*
fun:pango_cairo_fc_font_map_fontset_key_substitute
}
{
pango 2
Memcheck:Leak
fun:realloc
obj:/usr/lib*/libfontconfig.so*
obj:/usr/lib*/libfontconfig.so*
fun:_cairo_ft_font_options_substitute
}
# GLib
{
glib GQuark
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
...
fun:g_quark_*
}
{
glib GQuark
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
...
fun:g_intern_static_string
}
{
glib GQuark
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
...
fun:g_intern_string
}
{
xdg-mime init
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
...
fun:xdg_mime_init*
}
{
xdg-mime init
Memcheck:Leak
match-leak-kinds: definite
fun:calloc
...
fun:xdg_mime_init*
}
{
glib init
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
...
fun:glib_init_ctor
}
# Threads
{
pthread
Memcheck:Leak
fun:calloc
fun:_dl_allocate_tls
}
# pthread TLS allocation in stabber server threads
{
pthread_create_tls_stabber
Memcheck:Leak
match-leak-kinds: possible
fun:calloc
...
fun:allocate_dtv
fun:_dl_allocate_tls
fun:allocate_stack
fun:pthread_create*
fun:server_run
}
# expect/tcl library allocations
{
tcl_alloc_expect
Memcheck:Leak
match-leak-kinds: possible
fun:malloc
...
fun:TclpAlloc
fun:Tcl_Alloc
...
fun:exp_expectl
}
{
exp_printify
Memcheck:Leak
match-leak-kinds: possible
fun:malloc
...
fun:exp_printify
...
fun:exp_expectl
}
# Additional suppressions for functional tests
# libexpect still reachable allocations
{
exp_spawnv_malloc
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
...
fun:exp_spawnv
fun:exp_spawnl
}
{
exp_spawnl_realloc
Memcheck:Leak
match-leak-kinds: reachable
fun:realloc
...
fun:exp_spawnv
fun:exp_spawnl
}
# libtcl memory pool allocations (expected)
{
tcl_alloc_pool
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
...
fun:TclpAlloc
fun:Tcl_Alloc
}
{
tcl_alloc_pool_calloc
Memcheck:Leak
match-leak-kinds: reachable
fun:calloc
...
fun:TclpAlloc
fun:Tcl_Alloc
}
# pthread thread-local storage (normal for multi-threaded programs)
{
pthread_tls_allocate_dtv
Memcheck:Leak
match-leak-kinds: possible
fun:calloc
fun:calloc
fun:allocate_dtv
fun:_dl_allocate_tls
fun:allocate_stack
fun:pthread_create*
}
# glib static initializations
{
glib_hash_table_init
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
fun:g_malloc
fun:g_hash_table_new_full
...
fun:call_init
fun:_dl_init
}
{
glib_array_init
Memcheck:Leak
match-leak-kinds: reachable
fun:realloc
fun:g_realloc
...
fun:call_init
fun:_dl_init
}
# fdopen/fopen allocations (FILE* buffers - normal)
{
fdopen_file_buffer
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
...
fun:fdopen*
}
{
fopen_file_buffer
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
...
fun:fopen*
}
# stabber log_init (server log file)
{
stabber_log_init
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
...
fun:log_init
fun:server_run
}
# glib time zone (static allocation)
{
g_time_zone_new_local
Memcheck:Leak
match-leak-kinds: reachable
...
fun:g_time_zone_new_local
}
{
g_time_zone_array
Memcheck:Leak
match-leak-kinds: reachable
fun:realloc
fun:g_realloc
...
fun:g_array_sized_new
fun:g_time_zone_new_identifier
}
# stabber log g_date_time_format invalid read - benign race in logging
{
stabber_g_date_time_format_invalid_read
Memcheck:Addr1
...
fun:g_date_time_format
fun:log_println
...
}
{
stabber_g_date_time_format_invalid_read2
Memcheck:Addr2
...
fun:g_date_time_format
fun:log_println
...
}
{
stabber_g_date_time_format_invalid_read4
Memcheck:Addr4
...
fun:g_date_time_format
fun:log_println
...
}
{
stabber_g_date_time_format_invalid_read8
Memcheck:Addr8
...
fun:g_date_time_format
fun:log_println
...
}
# More generic suppression for g_date_time_format race condition
{
g_date_time_format_cond
Memcheck:Cond
...
fun:g_date_time_format
...
}
{
g_date_time_format_value1
Memcheck:Value1
...
fun:g_date_time_format
...
}
{
g_date_time_format_value2
Memcheck:Value2
...
fun:g_date_time_format
...
}
{
g_date_time_format_value4
Memcheck:Value4
...
fun:g_date_time_format
...
}
{
g_date_time_format_value8
Memcheck:Value8
...
fun:g_date_time_format
...
}
# Suppress all Addr errors in log_println
{
log_println_addr1
Memcheck:Addr1
...
fun:log_println
...
}
{
log_println_addr2
Memcheck:Addr2
...
fun:log_println
...
}
{
log_println_addr4
Memcheck:Addr4
...
fun:log_println
...
}
{
log_println_addr8
Memcheck:Addr8
...
fun:log_println
...
}