From 528b150162e703ee0febd47e87c40aa3296eba4f Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 10 Jun 2016 11:29:09 +0200 Subject: [PATCH] Update valgrind test support --- tests/Makefile.am.inc | 6 +- tests/flatpak-valgrind.supp | 199 ------------- tests/flatpak.supp | 1 + tests/glib.supp | 580 ++++++++++++++++++++++++++++++++++++ tests/libtest.sh | 6 +- 5 files changed, 587 insertions(+), 205 deletions(-) delete mode 100644 tests/flatpak-valgrind.supp create mode 100644 tests/flatpak.supp create mode 100644 tests/glib.supp diff --git a/tests/Makefile.am.inc b/tests/Makefile.am.inc index 1018b4c1..23a69458 100644 --- a/tests/Makefile.am.inc +++ b/tests/Makefile.am.inc @@ -1,4 +1,4 @@ -TESTS_ENVIRONMENT += OT_TESTS_DEBUG=1 \ +TESTS_ENVIRONMENT += FLATPAK_TESTS_DEBUG=1 \ FLATPAK_TRIGGERSDIR=$$(cd $(top_srcdir) && pwd)/triggers \ FLATPAK_BWRAP=$$(cd $(top_builddir) && pwd)/flatpak-bwrap \ FLATPAK_DBUSPROXY=$$(cd $(top_builddir) && pwd)/flatpak-dbus-proxy \ @@ -100,8 +100,8 @@ test_scripts = \ test_programs = testdb test-doc-portal @VALGRIND_CHECK_RULES@ -VALGRIND_SUPPRESSIONS_FILES=tests/flatpak-valgrind.supp -EXTRA_DIST += tests/flatpak-valgrind.supp +VALGRIND_SUPPRESSIONS_FILES=tests/flatpak.supp tests/glib.supp +EXTRA_DIST += tests/flatpak.supp tests/glib.supp DISTCLEANFILES += \ tests/services/org.freedesktop.Flatpak.service \ tests/services/org.freedesktop.portal.Documents.service \ diff --git a/tests/flatpak-valgrind.supp b/tests/flatpak-valgrind.supp deleted file mode 100644 index 00efd87b..00000000 --- a/tests/flatpak-valgrind.supp +++ /dev/null @@ -1,199 +0,0 @@ -{ - g_type_init_with_debug_flags calloc - Memcheck:Leak - fun:calloc - ... - fun:g_type_init_with_debug_flags - ... -} - -{ - g_type_add_interface_static malloc - Memcheck:Leak - fun:malloc - ... - fun:g_type_add_interface_static - ... -} - -{ - g_type_add_interface_dynamic malloc - Memcheck:Leak - fun:malloc - ... - fun:g_type_add_interface_dynamic - ... -} - -{ - g_type_class_ref malloc - Memcheck:Leak - fun:malloc - ... - fun:g_type_class_ref - ... -} - -{ - g_type_register_dynamic malloc - Memcheck:Leak - fun:malloc - ... - fun:g_type_register_dynamic - ... -} - -{ - g_type_init_with_debug_flags malloc - Memcheck:Leak - fun:malloc - ... - fun:g_type_init_with_debug_flags - ... -} - -{ - g_type_init_with_debug_flags realloc - Memcheck:Leak - fun:realloc - ... - fun:g_type_init_with_debug_flags - ... -} - -{ - g_test_add_vtable malloc - Memcheck:Leak - fun:malloc - ... - fun:g_test_add_vtable - ... -} - -{ - g_test_init - Memcheck:Leak - fun:malloc - ... - fun:g_test_init - ... -} - -{ - g_type_register_static malloc - Memcheck:Leak - fun:malloc - ... - fun:g_type_register_static - ... -} - -{ - g_type_register_static realloc - Memcheck:Leak - fun:realloc - ... - fun:g_type_register_static - ... -} - -{ - g_type_register_fundamental never freed - Memcheck:Leak - fun:malloc - ... - fun:g_type_register_fundamental - ... -} - -{ - g_type_class_ref never finalized - Memcheck:Leak - fun:calloc - ... - fun:g_type_class_ref - ... -} - -{ - DBusGValue qdata - Memcheck:Leak - fun:realloc - fun:g_realloc - fun:g_type_set_qdata - fun:_dbus_g_value_types_init - ... -} - -{ - gettext conditional jump - Memcheck:Cond - fun:__GI___strcasecmp_l - fun:__gconv_open - fun:_nl_find_msg - fun:__dcigettext - ... -} - -{ - gettext uninitialized value - Memcheck:Value8 - fun:__GI___strcasecmp_l - fun:__gconv_open - fun:_nl_find_msg - fun:__dcigettext - ... -} - -{ - font config invalid reads - Memcheck:Addr4 - ... - fun:FcConfigParseAndLoad - ... -} - -{ - dynamic loader conditional jump - Memcheck:Cond - fun:index - fun:expand_dynamic_string_token - fun:_dl_map_object - fun:map_doit - fun:_dl_catch_error - fun:do_preload - fun:dl_main - ... -} - -{ - g_vfs_get_local - Memcheck:Leak - ... - fun:g_vfs_get_local - ... -} - -{ - _g_io_modules_ensure_loaded - Memcheck:Leak - ... - fun:_g_io_modules_ensure_loaded - ... -} - -{ - _g_io_module_get_default - Memcheck:Leak - ... - fun:_g_io_module_get_default - ... -} - -{ - _dl_allocate_tls - Memcheck:Leak - ... - fun:_dl_allocate_tls - ... -} diff --git a/tests/flatpak.supp b/tests/flatpak.supp new file mode 100644 index 00000000..b81ea51b --- /dev/null +++ b/tests/flatpak.supp @@ -0,0 +1 @@ +# Use this to suppress "possibly lost" for global statics diff --git a/tests/glib.supp b/tests/glib.supp new file mode 100644 index 00000000..c3e00edc --- /dev/null +++ b/tests/glib.supp @@ -0,0 +1,580 @@ +# 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 +} +{ + g_intern_static_string + Memcheck:Leak + ... + fun:g_intern_static_string +} +{ + g_main_context_push_thread_default + Memcheck:Leak + ... + fun:g_queue_new + fun:g_main_context_push_thread_default +} +{ + g_main_context_push_thread_default_inlined + Memcheck:Leak + ... + fun:g_slice_alloc0 + fun:g_main_context_push_thread_default +} +{ + g_dbus_error_register_error + Memcheck:Leak + ... + fun:g_dbus_error_register_error +} +{ + g_param_spec_pool_insert + Memcheck:Leak + ... + fun:g_param_spec_pool_insert +} +{ + g_main_context_default + Memcheck:Leak + ... + fun:g_main_context_default +} +{ + g_main_context_check + Memcheck:Leak + ... + fun:g_ptr_array_add + fun:g_main_context_check +} +{ + g_test_run_suite + Memcheck:Leak + ... + fun:g_slist_copy + fun:g_test_run_suite_internal + fun:g_test_run_suite +} +{ + g_dbus_interface_info_cache_build + Memcheck:Leak + ... + fun:g_dbus_interface_info_cache_build +} +{ + g_cancellable_push_current + Memcheck:Leak + ... + fun:thread_memory_from_self + ... + fun:g_cancellable_push_current +} +{ + _g_io_module_get_default + Memcheck:Leak + ... + fun:g_io_module_new + fun:g_io_modules_scan_all_in_directory_with_scope + fun:_g_io_modules_ensure_loaded + fun:_g_io_module_get_default +} +{ + g_io_scheduler_push_job + Memcheck:Leak + ... + fun:init_scheduler + fun:g_once_impl + fun:g_io_scheduler_push_job +} +{ + g_io_scheduler_push_job_2 + Memcheck:Leak + ... + fun:g_system_thread_new + ... + fun:g_io_scheduler_push_job +} +{ + 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_socket_connection_factory_register_type + Memcheck:Leak + ... + fun:g_socket_connection_factory_register_type +} +{ + g_test_add_vtable + Memcheck:Leak + ... + fun:g_test_add_vtable +} +{ + g_mutex_lock + Memcheck:Leak + ... + fun:g_mutex_impl_new + fun:g_mutex_get_impl + fun:g_mutex_lock +} +{ + g_thread_self + Memcheck:Leak + ... + fun:g_thread_self +} +{ + g_rec_mutex_lock + Memcheck:Leak + ... + fun:g_rec_mutex_impl_new + fun:g_rec_mutex_get_impl + fun:g_rec_mutex_lock +} +{ + test_case_run + Memcheck:Leak + ... + fun:g_malloc0 + fun:test_case_run + ... + fun:g_test_run_suite +} +{ + g_get_charset + Memcheck:Leak + ... + fun:g_get_charset +} +{ + g_test_run_suite__timer_new + Memcheck:Leak + ... + fun:g_timer_new + fun:test_case_run + ... + fun:g_test_run_suite +} +{ + g_test_run_suite__timer_new2 + Memcheck:Leak + ... + fun:g_timer_new + fun:test_case_run_suite_internal + ... + fun:g_test_run_suite +} +{ + 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_interface_add_prerequisite + Memcheck:Leak + ... + fun:g_type_interface_add_prerequisite +} +{ + + Memcheck:Leak + ... + fun:g_slist_copy + fun:g_test_run_suite_internal + ... + fun:g_test_run_suite +} +{ + g_set_prgname + Memcheck:Leak + ... + fun:g_set_prgname +} +{ + g_test_run_suite__strconcat_2 + Memcheck:Leak + ... + fun:g_strconcat + fun:g_test_run_suite_internal +} +{ + g_test_run_suite__strdup + Memcheck:Leak + ... + fun:g_strdup + fun:g_test_run_suite_internal +} +{ + g_private_get + Memcheck:Leak + ... + fun:g_private_get +} +{ + g_private_set + Memcheck:Leak + ... + fun:g_private_set +} +{ + g_static_mutex_get_mutex_impl + Memcheck:Leak + ... + fun:g_static_mutex_get_mutex_impl +} +{ + g_variant_type_info_unref + Memcheck:Leak + ... + fun:g_hash_table_remove + fun:g_variant_type_info_unref +} +{ + 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_child_watch_finalize__rt_sigaction + Memcheck:Param + rt_sigaction(act->sa_flags) + fun:__libc_sigaction + ... + fun:g_child_watch_finalize +} +{ + g_dbus_worker_new + Memcheck:Leak + fun:calloc + ... + fun:_g_dbus_worker_new +} +{ + gdbus_shared_thread_func + Memcheck:Leak + match-leak-kinds: definite + ... + fun:g_malloc + ... + fun:gdbus_shared_thread_func +} +{ + 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_get_language_names + Memcheck:Leak + match-leak-kinds: definite + fun:calloc + fun:g_malloc0 + fun:g_get_language_names +} +{ + 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 +} diff --git a/tests/libtest.sh b/tests/libtest.sh index 4759c85e..da7ab298 100644 --- a/tests/libtest.sh +++ b/tests/libtest.sh @@ -57,12 +57,12 @@ export G_DEBUG=fatal-warnings # tarballs are predictable, except we don't want this in our tests. unset TAR_OPTIONS -if test -n "${OT_TESTS_DEBUG:-}"; then +if test -n "${FLATPAK_TESTS_DEBUG:-}"; then set -x fi -if test -n "${OT_TESTS_VALGRIND:-}"; then - CMD_PREFIX="env G_SLICE=always-malloc valgrind -q --leak-check=full --num-callers=30 --suppressions=${test_srcdir}/flatpak-valgrind.supp" +if test -n "${FLATPAK_TESTS_VALGRIND:-}"; then + CMD_PREFIX="env G_SLICE=always-malloc valgrind -q --leak-check=full --error-exitcode=1 --num-callers=30 --suppressions=${test_srcdir}/flatpak.supp --suppressions=${test_srcdir}/glib.supp" else CMD_PREFIX="" fi