{ 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 } { nice-get-type-helgrind Helgrind:Race fun:nice_*_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 } # False positives { g-source-unlocked Helgrind:Race fun:g_source_*_unlocked } { g-source-internal Helgrind:Race fun:g_source_*_internal } # FIXME: Probably actually a race { test-io-stream-common-termination Helgrind:Race fun:check_for_termination } { test-io-stream-common-wait Helgrind:Race fun:wait_for_start } { test-io-stream-common-main Helgrind:Race fun:main_thread_cb } { test-io-stream-common-read Helgrind:Race fun:read_thread_cb } { test-io-stream-common-write Helgrind:Race fun:write_thread_cb } # 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 } # GStreamer leaks, we know { gst-check-init Memcheck:Leak ... fun:gst_check_init } { g-quark-init Memcheck:Leak ... fun:g_quark_init } # For Glib in RHEL 7 { g_type_register_fundamental-rhel7 Memcheck:Leak ... fun:g_type_register_fundamental } { dl-init-rhel7 Memcheck:Leak ... fun:_dl_init } { g-type-class-ref-rhel7 Memcheck:Leak ... fun:g_type_class_ref } { invalid-free-in-rhel7 Memcheck:Free fun:free fun:__libc_freeres } { g-thread-pool-push-rhel7 Memcheck:Leak ... fun:g_thread_pool_push } { exit-shell-rhel7 Memcheck:Leak ... fun:exit_shell } { g-bus-rhel7 Memcheck:Leak ... fun:g_bus_get_sync } # glibc does not deallocate thread-local storage { Memcheck:Leak ... fun:_dl_allocate_tls fun:pthread_create@@* } { Memcheck:Leak ... fun:_dl_allocate_tls }