NetworkManager/valgrind.suppressions
Thomas Haller 9f1d4b650c
valgrind: add valgrind suppression for memmove() overlap
This valgrind error is raised by Ubuntu 23:10, with valgrind 1:3.21.0-0ubuntu1 and
glibc 2.38-1ubuntu6:

  ==141967== Source and destination overlap in memcpy_chk(0x1ffefffe98, 0x1ffefffe92, 8)
  ==141967==    at 0x4851042: __memcpy_chk (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
  ==141967==    by 0x502A9CC: memmove (string_fortified.h:36)
  ==141967==    by 0x502A9CC: inet_pton6 (inet_pton.c:226)
  ==141967==    by 0x502A9CC: __inet_pton_length (inet_pton.c:56)
  ==141967==    by 0x502A9CC: inet_pton (inet_pton.c:69)
  ==141967==    by 0x114FA3: nmtst_inet6_from_string_p (nm-test-utils.h:1764)
  ==141967==    by 0x114FA3: _nmtst_assert_ip6_address (nm-test-utils.h:1856)
  ==141967==    by 0x114FA3: test_stable_privacy (test-utils.c:26)
  ==141967==    by 0x4DEC85D: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
  ==141967==    by 0x4DEC78A: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
  ==141967==    by 0x4DECD2A: g_test_run_suite (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
  ==141967==    by 0x4DECE07: g_test_run (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
  ==141967==    by 0x4F070CF: (below main) (libc_start_call_main.h:58)
  ==141967==
  {
     <insert_a_suppression_name_here>
     Memcheck:Overlap
     fun:__memcpy_chk
     fun:memmove
     fun:inet_pton6
     fun:__inet_pton_length
     fun:inet_pton
     fun:nmtst_inet6_from_string_p
     fun:_nmtst_assert_ip6_address
     fun:test_stable_privacy
     obj:/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0
     obj:/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0
     fun:g_test_run_suite
     fun:g_test_run
     fun:(below main)
  }

This is because memmove() can call __memcpy_chk(), which triggers the
false positive in valgrind.

It probably affects other places too, but for us it's sufficient to
restrict the valgrind suppression to calls from inet_pton(). This
suppression will probably break with LTO enabled.

See-also: https://bugs.kde.org/show_bug.cgi?id=402833

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1802
2023-11-22 13:27:24 +01:00

511 lines
9.4 KiB
Text

# IMPORTANT: these suppressions strongly depend on the used library version.
# They probably don't work out-of-the-box on anything but Fedora, where they
# are mainly tested.
#
# Make sure to install debug information, otherwise the suppression trace might
# not match. On Fedora, try 'dnf debuginfo-install glib2'.
{
NSS_NoDB_Init
Memcheck:Leak
...
fun:NSS_NoDB_Init
...
}
{
g_type_init_with_debug_flags
Memcheck:Leak
...
fun:g_type_init_with_debug_flags
...
}
{
g_type_register_static
Memcheck:Leak
...
fun:g_type_register_static
...
}
{
g_param_spec_boxed
Memcheck:Leak
...
fun:g_param_spec_boxed
...
}
{
g_type_add_interface_static
Memcheck:Leak
...
fun:g_type_add_interface_static
...
}
{
g_signal_type_cclosure_new
Memcheck:Leak
...
fun:g_malloc0
fun:g_closure_new_simple
fun:g_signal_type_cclosure_new
fun:g_signal_new
...
}
{
dbus_g_value_types_init
Memcheck:Leak
fun:realloc
fun:g_realloc
fun:g_type_set_qdata
fun:_dbus_g_value_types_init
fun:dbus_g_bus_get
...
}
{
type_iface_vtable_base_init_Wm
Memcheck:Leak
fun:malloc
fun:g_malloc
fun:g_memdup
fun:type_iface_vtable_base_init_Wm
fun:g_type_class_ref
...
}
{
g_type_create_instance
Memcheck:Leak
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_slice_alloc0
fun:g_type_create_instance
fun:g_object_constructor
...
}
{
g_signal_new_class_handler
Memcheck:Leak
...
fun:g_closure_new_simple
fun:g_cclosure_new
fun:g_signal_new_class_handler
...
}
{
_dl_init_g_type_register_fundamental
Memcheck:Leak
...
fun:g_type_register_fundamental
...
fun:_dl_init
obj:/*/ld-*.so
}
{
_dl_init_g_malloc0
Memcheck:Leak
fun:calloc
fun:g_malloc0
...
fun:_dl_init
obj:/*/ld-*.so
}
{
# added on Fedora 22
# This happens when setting LD_LIBRARY_PATH and the linker is searching the libraries to load.
# for example:
# LD_LIBRARY_PATH=./././././././././././././././././libnm/.libs:./libnm-util/.libs:./libnm-glib/.libs
_dl_expand_dynamic_string_token
Memcheck:Cond
fun:index
fun:expand_dynamic_string_token
...
fun:dl_main
fun:_dl_sysdep_start
fun:_dl_start_final
fun:_dl_start
obj:/*/ld-*.so
...
}
{
all_gobject_init_ctor
Memcheck:Leak
...
fun:gobject_init_ctor
...
}
# The following suppressions were needed on fc20.armv7hl
{
_fun_malloc
Memcheck:Leak
match-leak-kinds: possible
fun:malloc
}
{
_fun_realloc
Memcheck:Leak
match-leak-kinds: possible
fun:realloc
}
{
_fun_calloc
Memcheck:Leak
match-leak-kinds: possible
fun:calloc
}
{
_glib_sigaction
Memcheck:Param
rt_sigaction(act->sa_flags)
fun:__libc_sigaction
fun:unref_unix_signal_handler_unlocked
fun:g_child_watch_finalize
fun:g_source_unref_internal
fun:g_main_context_dispatch
...
fun:g_main_loop_run
...
}
{
# FIXME: dunny why this is needed. Clean up later.
_dispatcher_test
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_variant_new_from_bytes
fun:g_variant_new_from_trusted
fun:parse_dhcp
fun:get_dispatcher_file
...
fun:g_test_run_suite_internal
fun:g_test_run_suite_internal
fun:g_test_run_suite
}
{
_gdbus_1
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_slice_alloc0
fun:get_dispatch
fun:g_main_context_dispatch
...
fun:g_main_loop_run
fun:gdbus_shared_thread_func
fun:g_thread_proxy
fun:start_thread
fun:clone
}
{
_gdbus_2
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_slice_alloc0
fun:g_main_context_push_thread_default
fun:gdbus_shared_thread_func
fun:g_thread_proxy
fun:start_thread
fun:clone
}
{
_gdbus_3
Memcheck:Leak
match-leak-kinds: definite
fun:calloc
fun:g_malloc0
fun:_g_socket_read_with_control_messages
fun:_g_dbus_worker_do_read_unlocked
fun:_g_dbus_worker_do_read_cb
fun:g_simple_async_result_complete
fun:complete_in_idle_cb
...
fun:g_main_context_dispatch
...
fun:g_main_loop_run
fun:gdbus_shared_thread_func
fun:g_thread_proxy
}
{
_gdbus_4
Memcheck:Leak
match-leak-kinds: definite
fun:calloc
fun:g_malloc0
...
fun:g_slice_alloc
fun:g_slice_alloc0
fun:g_main_context_push_thread_default
fun:gdbus_shared_thread_func
fun:g_thread_proxy
fun:start_thread
fun:clone
}
{
_gdbus_5
Memcheck:Leak
match-leak-kinds: definite
...
fun:g_dbus_message_new_from_blob
...
}
{
_gdbus_9
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_slice_alloc0
fun:get_dispatch
fun:g_main_current_source
fun:g_task_return
fun:g_task_thread_pool_thread
fun:g_thread_pool_thread_proxy
fun:g_thread_proxy
fun:start_thread
fun:clone
}
{
_gdbus_10
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_slice_alloc0
fun:g_system_thread_new
fun:g_thread_new_internal
...
fun:g_thread_pool_push
...
fun:g_task_run_in_thread
fun:g_async_initable_real_init_async
fun:g_bus_get
...
}
{
_gdbus_11
Memcheck:Leak
match-leak-kinds: definite
fun:calloc
fun:g_malloc0
...
fun:g_slice_alloc
fun:g_slice_alloc0
fun:get_dispatch
fun:g_main_current_source
fun:g_task_return
fun:g_task_thread_pool_thread
fun:g_thread_pool_thread_proxy
fun:g_thread_proxy
fun:start_thread
}
{
_gdbus_12
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_error_new_valist
fun:g_error_new
fun:g_dbus_error_new_for_dbus_error
fun:g_dbus_error_set_dbus_error
fun:g_dbus_message_to_gerror
fun:decode_method_reply
fun:g_dbus_connection_call_sync_internal
fun:g_dbus_proxy_call_sync_internal
fun:g_dbus_proxy_call_sync
}
{
_gdbus_15
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_hash_table_new_full
fun:demarshal_map
fun:_dbus_gvalue_demarshal
fun:dbus_g_proxy_end_call_internal
fun:dbus_g_proxy_end_call
fun:get_permissions_reply
fun:complete_pending_call_and_unlock
fun:dbus_connection_dispatch
fun:message_queue_dispatch
}
{
_gdbus_16
Memcheck:Leak
match-leak-kinds: definite
fun:calloc
fun:g_malloc0
fun:_g_dbus_worker_send_message
fun:g_dbus_connection_send_message_unlocked
fun:unsubscribe_id_internal
fun:g_dbus_connection_signal_unsubscribe
fun:g_dbus_proxy_finalize
...
}
{
_gdbus_17
Memcheck:Leak
match-leak-kinds: definite
fun:calloc
fun:g_malloc0
fun:thread_memory_from_self
fun:g_slice_alloc
fun:g_slice_alloc0
fun:g_main_context_push_thread_default
fun:gdbus_shared_thread_func
fun:g_thread_proxy
fun:start_thread
fun:clone
}
{
_gdbus_18
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_slice_alloc0
fun:get_dispatch
fun:g_main_dispatch
fun:g_main_context_dispatch
...
fun:g_main_loop_run
fun:gdbus_shared_thread_func
fun:g_thread_proxy
fun:start_thread
fun:clone
}
{
_gdbus_f21_1
Memcheck:Leak
match-leak-kinds: definite
...
fun:_g_dbus_worker_send_message
fun:g_dbus_connection_send_message_unlocked
...
fun:g_dbus_proxy_finalize
...
}
{
_gdbus_f23_1
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*
fun:g_object_new
fun:g_task_new
fun:_g_socket_read_with_control_messages
fun:_g_dbus_worker_do_read_unlocked
fun:_g_dbus_worker_do_read_cb
fun:g_task_return_now
...
fun:g_main_dispatch
fun:g_main_context_dispatch
fun:g_main_context_iterate.isra.*
fun:g_main_loop_run
fun:gdbus_shared_thread_func
fun:g_thread_proxy
fun:start_thread
fun:clone
}
{
_gdbus_f25_1
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_slice_alloc0
fun:g_system_thread_new
fun:g_thread_new_internal
fun:g_thread_new
fun:g_get_worker_context
fun:g_task_thread_pool_init
fun:g_task_get_type
fun:ensure_required_types
...
fun:g_bus_get_sync
}
{
_gdbus_f25_2
Memcheck:Leak
match-leak-kinds: definite
...
fun:g_dbus_proxy_new_sync
fun:initable_init
fun:async_init_thread
fun:g_task_thread_pool_thread
fun:g_thread_pool_thread_proxy
fun:g_thread_proxy
fun:start_thread
fun:clone
}
{
_gdbusobjectmanager_f25_1
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:g_malloc
fun:g_slice_alloc
fun:g_slice_alloc0
fun:g_system_thread_new
fun:g_thread_new_internal
fun:g_thread_pool_start_thread.part.1
fun:g_thread_pool_start_thread
fun:g_thread_pool_push
fun:g_task_run_in_thread
fun:g_async_initable_real_init_async
fun:g_async_initable_new_valist_async
fun:g_async_initable_new_async
fun:g_dbus_object_manager_client_new_for_bus
}
{
_btrfs_io_clone
Memcheck:Param
ioctl(generic)
fun:ioctl
fun:btrfs_reflink_with_progress
...
}
{
_memmove_overlap
Memcheck:Overlap
fun:__memcpy_chk
fun:memmove
fun:inet_pton6
fun:__inet_pton_length
fun:inet_pton
...
}