diff options
author | Philip Withnall <philip.withnall@collabora.co.uk> | 2014-09-25 10:33:12 +0100 |
---|---|---|
committer | Philip Withnall <philip.withnall@collabora.co.uk> | 2014-09-25 10:33:12 +0100 |
commit | 0b0ae4d86e8b090acf909eb3e0df05e98361086c (patch) | |
tree | de7e29a7735ba1b25d70b10b619306f6400238fa /tests | |
parent | 07a46eded142f35952a56198c4d5f2a7e8edd3a8 (diff) | |
download | libnice-0b0ae4d86e8b090acf909eb3e0df05e98361086c.tar.gz |
tests: Add a Valgrind suppression file
To be used with `make check-valgrind`.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 2 | ||||
-rw-r--r-- | tests/libnice.supp | 475 |
2 files changed, 477 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 627f583..84c37be 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -112,3 +112,5 @@ test_icetcp_LDADD = $(COMMON_LDADD) all-local: chmod a+x $(srcdir)/check-test-fullmode-with-stun.sh chmod a+x $(srcdir)/test-pseudotcp-random.sh + +EXTRA_DIST = libnice.supp diff --git a/tests/libnice.supp b/tests/libnice.supp new file mode 100644 index 0000000..0c07a57 --- /dev/null +++ b/tests/libnice.supp @@ -0,0 +1,475 @@ +{ + gnutls-init-calloc + Memcheck:Leak + fun:calloc + ... + fun:gtls_gnutls_init +} + +{ + gnutls-init-realloc + Memcheck:Leak + fun:realloc + ... + fun:gtls_gnutls_init +} + +{ + g-tls-backend-gnutls-init + Memcheck:Leak + fun:g_once_impl + fun:g_tls_backend_gnutls_init +} + +{ + p11-tokens-init + Memcheck:Leak + fun:calloc + ... + fun:create_tokens_inlock + fun:initialize_module_inlock_reentrant +} + +{ + gobject-init-malloc + Memcheck:Leak + fun:malloc + ... + fun:gobject_init_ctor +} + +{ + gobject-init-realloc + Memcheck:Leak + fun:realloc + ... + fun:gobject_init_ctor +} + +{ + gobject-init-calloc + Memcheck:Leak + fun:calloc + ... + fun:gobject_init_ctor +} + +{ + g-type-register-dynamic + Memcheck:Leak + fun:malloc + ... + fun:g_type_register_dynamic +} + +{ + g-type-register-static + 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-static-calloc + Memcheck:Leak + fun:calloc + ... + fun:g_type_register_static +} + +{ + g-type-add-interface-dynamic + Memcheck:Leak + fun:malloc + ... + fun:g_type_add_interface_dynamic +} + +{ + g-type-add-interface-static + Memcheck:Leak + fun:malloc + ... + fun:g_type_add_interface_static +} + +{ + g-test-rand-init + Memcheck:Leak + fun:calloc + ... + fun:g_rand_new_with_seed_array + fun:test_run_seed + ... + fun:g_test_run +} + +{ + g-test-rand-init2 + Memcheck:Leak + fun:calloc + ... + fun:g_rand_new_with_seed_array + ... + fun:get_global_random + ... + fun:g_test_init +} + +{ + g-quark-table-new + Memcheck:Leak + fun:g_hash_table_new + ... + fun:quark_new +} + +{ + g-quark-table-resize + Memcheck:Leak + fun:g_hash_table_resize + ... + fun:quark_new +} + +{ + g-type-interface-init + Memcheck:Leak + fun:malloc + ... + fun:type_iface_vtable_base_init_Wm +} + +{ + g-type-class-init + Memcheck:Leak + fun:calloc + ... + fun:type_class_init_Wm +} + +{ + g-io-module-default-singleton-malloc + Memcheck:Leak + fun:malloc + ... + fun:g_type_create_instance + ... + fun:_g_io_module_get_default +} + +{ + g-io-module-default-singleton-module + Memcheck:Leak + fun:calloc + ... + fun:g_module_open + ... + fun:_g_io_module_get_default +} + +{ + g-get-language-names + Memcheck:Leak + fun:malloc + ... + fun:g_get_language_names +} + +{ + g-static-mutex + Memcheck:Leak + fun:malloc + ... + fun:g_static_mutex_get_mutex_impl +} + +{ + g-system-thread-init + Memcheck:Leak + fun:calloc + ... + fun:g_system_thread_new +} + +{ + g-io-module-default-proxy-resolver-gnome + Memcheck:Leak + fun:calloc + ... + fun:g_proxy_resolver_gnome_init + ... + fun:_g_io_module_get_default +} + +{ + 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 +} + +# TODO: haven't checked these entirely rigorously +{ + 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 +} + +# TODO: haven't checked this thoroughly either +{ + g-wakeup-acknowledge + drd:ConflictingAccess + fun:read + fun:g_wakeup_acknowledge +} + +# TODO: or these +{ + 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 +} + +# TODO: ???? +{ + 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/master/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 +} + +# TODO: Check this +{ + 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 +{ + nice-output-stream-cond + Helgrind:Misc + ... + fun:g_cond_clear + fun:write_data_unref +} + +# False positive, but I can't explain how (FIXME) +{ + g-task-cond + Helgrind:Misc + ... + fun:g_cond_clear + fun:g_task_finalize +} + +# TODO FIXME: This is definitely a race. +# https://bugzilla.gnome.org/show_bug.cgi?id=735754 +{ + g-tls-base-stream-close + Helgrind:Race + ... + fun:g_*_stream_close + fun:streams_removed_cb +} +{ + g-tls-base-stream-close2 + Helgrind:Race + ... + fun:g_*_stream_close + fun:g_tls_connection_gnutls_close +} + +# 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 +} |