Imported Upstream version 2.67.6
[platform/upstream/glib.git] / glib.supp
1 # GLib Valgrind suppressions file
2 #
3 # This provides a list of suppressions for all of GLib (including GIO), for all
4 # Valgrind tools (memcheck, drd, helgrind, etc.) for the false positives and
5 # deliberate one-time leaks which GLib causes to be reported when running under
6 # Valgrind.
7 #
8 # When running an application which links to GLib under Valgrind, you can pass
9 # this suppression file to Valgrind using --suppressions=/path/to/glib-2.0.supp.
10 #
11 # http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress
12 #
13 # Note that there is currently no way for Valgrind to load this automatically
14 # (https://bugs.kde.org/show_bug.cgi?id=160905), so the best GLib can currently
15 # do is to install this file as part of its development package.
16 #
17 # This file should be updated if GLib introduces a new deliberate one-time leak,
18 # or another false race positive in Valgrind: please file bugs at:
19 #
20 # https://gitlab.gnome.org/GNOME/glib/issues/new
21
22 {
23         gnutls-init-calloc
24         Memcheck:Leak
25         match-leak-kinds:reachable
26         fun:calloc
27         ...
28         fun:gtls_gnutls_init
29 }
30
31 {
32         gnutls-init-realloc
33         Memcheck:Leak
34         match-leak-kinds:reachable
35         fun:realloc
36         ...
37         fun:gtls_gnutls_init
38 }
39
40 {
41         g-tls-backend-gnutls-init
42         Memcheck:Leak
43         match-leak-kinds:reachable
44         fun:g_once_impl
45         fun:g_tls_backend_gnutls_init
46 }
47
48 {
49         p11-tokens-init
50         Memcheck:Leak
51         match-leak-kinds:reachable
52         fun:calloc
53         ...
54         fun:create_tokens_inlock
55         fun:initialize_module_inlock_reentrant
56 }
57
58 # One-time allocation from libc for getpwnam() results
59 {
60         g-local-vfs-getpwnam
61         Memcheck:Leak
62         match-leak-kinds:reachable
63         fun:malloc
64         ...
65         fun:getpwnam
66         fun:g_local_vfs_parse_name
67 }
68
69 {
70         glib-init-malloc
71         Memcheck:Leak
72         match-leak-kinds:reachable
73         fun:malloc
74         ...
75         fun:g_quark_init
76 }
77
78 {
79         glib-init-calloc
80         Memcheck:Leak
81         match-leak-kinds:reachable
82         fun:calloc
83         ...
84         fun:g_quark_init
85 }
86
87 {
88         gobject-init-malloc
89         Memcheck:Leak
90         match-leak-kinds:reachable
91         fun:malloc
92         ...
93         fun:gobject_init_ctor
94 }
95
96 {
97         gobject-init-realloc
98         Memcheck:Leak
99         match-leak-kinds:reachable
100         fun:realloc
101         ...
102         fun:gobject_init_ctor
103 }
104
105 {
106         gobject-init-calloc
107         Memcheck:Leak
108         match-leak-kinds:possible,reachable
109         fun:calloc
110         ...
111         fun:gobject_init_ctor
112 }
113
114 {
115         g-type-register-dynamic
116         Memcheck:Leak
117         match-leak-kinds:reachable
118         fun:malloc
119         ...
120         fun:g_type_register_dynamic
121 }
122
123 {
124         g-type-register-static
125         Memcheck:Leak
126         match-leak-kinds:possible,reachable
127         fun:malloc
128         ...
129         fun:g_type_register_static
130 }
131
132 {
133         g-type-register-static-realloc
134         Memcheck:Leak
135         match-leak-kinds:possible,reachable
136         fun:realloc
137         ...
138         fun:g_type_register_static
139 }
140
141 {
142         g-type-register-static-calloc
143         Memcheck:Leak
144         match-leak-kinds:possible,reachable
145         fun:calloc
146         ...
147         fun:g_type_register_static
148 }
149
150 {
151         g-type-register-fundamental
152         Memcheck:Leak
153         match-leak-kinds:possible,reachable
154         fun:malloc
155         ...
156         fun:g_type_register_fundamental
157 }
158
159 {
160         g-type-register-fundamental-calloc
161         Memcheck:Leak
162         match-leak-kinds:possible,reachable
163         fun:calloc
164         ...
165         fun:g_type_register_fundamental
166 }
167
168 {
169         g-type-add-interface-dynamic
170         Memcheck:Leak
171         match-leak-kinds:reachable
172         fun:malloc
173         ...
174         fun:g_type_add_interface_dynamic
175 }
176
177 {
178         g-type-add-interface-static
179         Memcheck:Leak
180         match-leak-kinds:reachable
181         fun:malloc
182         ...
183         fun:g_type_add_interface_static
184 }
185
186 {
187         g-type-add-interface-static-realloc
188         Memcheck:Leak
189         match-leak-kinds:reachable
190         fun:realloc
191         ...
192         fun:g_type_add_interface_static
193 }
194
195 {
196         g-type-add-interface-static-calloc
197         Memcheck:Leak
198         match-leak-kinds:reachable
199         fun:calloc
200         ...
201         fun:g_type_add_interface_static
202 }
203
204 {
205         g-test-rand-init
206         Memcheck:Leak
207         match-leak-kinds:reachable
208         fun:calloc
209         ...
210         fun:g_rand_new_with_seed_array
211         fun:test_run_seed
212         ...
213         fun:g_test_run
214 }
215
216 {
217         g-rand-init2
218         Memcheck:Leak
219         match-leak-kinds:reachable
220         fun:calloc
221         ...
222         fun:g_rand_new_with_seed_array
223         ...
224         fun:get_global_random
225 }
226
227 {
228         g-quark-table-new
229         Memcheck:Leak
230         match-leak-kinds:reachable
231         fun:g_hash_table_new
232         ...
233         fun:quark_new
234 }
235
236 {
237         g-quark-table-resize
238         Memcheck:Leak
239         match-leak-kinds:reachable
240         ...
241         fun:g_hash_table_resize
242         ...
243         fun:quark_new
244 }
245
246 {
247         g-type-interface-init
248         Memcheck:Leak
249         match-leak-kinds:reachable
250         fun:malloc
251         ...
252         fun:type_iface_vtable_base_init_Wm
253 }
254
255 {
256         g-type-class-init-calloc
257         Memcheck:Leak
258         match-leak-kinds:reachable
259         fun:calloc
260         ...
261         fun:type_class_init_Wm
262 }
263
264 {
265         g-type-class-init
266         Memcheck:Leak
267         match-leak-kinds:reachable
268         fun:g_type_create_instance
269         ...
270         fun:type_class_init_Wm
271 }
272
273 {
274         g-object-do-class-init-signals
275         Memcheck:Leak
276         match-leak-kinds:reachable
277         ...
278         fun:g_signal_new
279         ...
280         fun:type_class_init_Wm
281 }
282
283 {
284         g-type-prerequisites
285         Memcheck:Leak
286         match-leak-kinds:reachable
287         fun:realloc
288         ...
289         fun:type_iface_add_prerequisite_W
290 }
291
292 {
293         g-type-add-interface-check
294         Memcheck:Leak
295         match-leak-kinds:reachable
296         fun:malloc
297         ...
298         fun:g_type_add_interface_check
299         ...
300         fun:type_class_init_Wm
301 }
302
303 {
304         g-type-add-interface-check-realloc
305         Memcheck:Leak
306         match-leak-kinds:reachable
307         fun:realloc
308         ...
309         fun:g_type_add_interface_check
310         ...
311         fun:type_class_init_Wm
312 }
313
314 {
315         g-object-class-install-property
316         Memcheck:Leak
317         match-leak-kinds:reachable
318         fun:malloc
319         ...
320         fun:validate_and_install_class_property
321         ...
322         fun:type_class_init_Wm
323 }
324
325 {
326         g-param-spec-pool-new
327         Memcheck:Leak
328         match-leak-kinds:reachable
329         fun:malloc
330         ...
331         fun:g_param_spec_pool_new
332         ...
333         fun:type_class_init_Wm
334 }
335
336 # weak_locations_lock in gobject.c
337 {
338         g-weak-ref-lock
339         Memcheck:Leak
340         match-leak-kinds:reachable
341         fun:malloc
342         ...
343         fun:g_rw_lock_get_impl
344         ...
345         fun:g_weak_ref_set
346 }
347
348 {
349         g-object-base-class-init-construct-pproperties
350         Memcheck:Leak
351         match-leak-kinds:reachable
352         fun:malloc
353         ...
354         fun:g_slist_copy
355         fun:g_object_base_class_init
356         fun:type_class_init_Wm
357 }
358
359 {
360         g-type-class-ref
361         Memcheck:Leak
362         fun:calloc
363         ...
364         fun:type_class_init_Wm
365         ...
366         fun:g_type_class_ref
367 }
368
369 {
370         g-io-module-default-singleton-malloc
371         Memcheck:Leak
372         match-leak-kinds:reachable
373         fun:malloc
374         ...
375         fun:g_type_create_instance
376         ...
377         fun:_g_io_module_get_default
378 }
379
380 {
381         g-io-module-default-singleton-calloc
382         Memcheck:Leak
383         match-leak-kinds:reachable
384         fun:calloc
385         ...
386         fun:g_type_create_instance
387         ...
388         fun:_g_io_module_get_default
389 }
390
391 # This one seems to show up sometimes with g_type_create_instance() at the top
392 # of the stack, as well.
393 {
394         g-io-module-default-singleton
395         Memcheck:Leak
396         match-leak-kinds:reachable
397         fun:g_type_create_instance
398         ...
399         fun:_g_io_module_get_default
400 }
401
402 {
403         g-io-module-default-singleton-module
404         Memcheck:Leak
405         match-leak-kinds:reachable
406         fun:calloc
407         ...
408         fun:g_module_open
409         ...
410         fun:_g_io_module_get_default
411 }
412
413 {
414         g-io-module-default-singleton-name
415         Memcheck:Leak
416         match-leak-kinds:reachable
417         fun:malloc
418         ...
419         fun:g_strdup
420         ...
421         fun:_g_io_module_get_default*
422 }
423
424 {
425         g-io-module-default-singleton-weak-ref
426         Memcheck:Leak
427         fun:calloc
428         ...
429         fun:_g_io_module_get_default
430 }
431
432 {
433         g-get-language-names-malloc
434         Memcheck:Leak
435         match-leak-kinds:reachable
436         fun:malloc
437         ...
438         fun:g_get_language_names
439 }
440
441 {
442         g-get-language-names-calloc
443         Memcheck:Leak
444         match-leak-kinds:reachable
445         fun:calloc
446         ...
447         fun:g_get_language_names
448 }
449
450 {
451         g-get-language_names-with-category-malloc
452         Memcheck:Leak
453         match-leak-kinds:reachable
454         fun:malloc
455         ...
456         fun:g_get_language_names_with_category
457 }
458
459 {
460         g-get-language_names-with-category-calloc
461         Memcheck:Leak
462         match-leak-kinds:reachable
463         fun:calloc
464         ...
465         fun:g_get_language_names_with_category
466 }
467
468 {
469         g-get-language_names-with-category-realloc
470         Memcheck:Leak
471         match-leak-kinds:reachable
472         fun:realloc
473         ...
474         fun:g_get_language_names_with_category
475 }
476
477 {
478         g-static-mutex
479         Memcheck:Leak
480         match-leak-kinds:reachable
481         fun:malloc
482         ...
483         fun:g_static_mutex_get_mutex_impl
484 }
485
486 {
487         g-system-thread-init
488         Memcheck:Leak
489         match-leak-kinds:possible,reachable
490         fun:calloc
491         ...
492         fun:g_system_thread_new
493 }
494
495 {
496         g-system-thread-init-malloc
497         Memcheck:Leak
498         match-leak-kinds:possible,reachable
499         fun:malloc
500         ...
501         fun:g_system_thread_new
502 }
503
504 {
505         g-task-thread-pool-init
506         Memcheck:Leak
507         match-leak-kinds:possible,reachable,definite
508         fun:malloc
509         ...
510         fun:g_thread_new
511         ...
512         fun:g_task_thread_pool_init
513 }
514
515 {
516         g-io-module-default-proxy-resolver-gnome
517         Memcheck:Leak
518         match-leak-kinds:reachable
519         fun:calloc
520         ...
521         fun:g_proxy_resolver_gnome_init
522         ...
523         fun:_g_io_module_get_default
524 }
525
526 # One-time getaddrinfo() configuration loading
527 {
528         g-threaded-resolver-getaddrinfo-config
529         Memcheck:Leak
530         match-leak-kinds:reachable,definite
531         fun:malloc
532         ...
533         fun:__resolv_conf_allocate
534         ...
535         fun:getaddrinfo
536         fun:do_lookup_by_name
537 }
538
539 # memcheck checks that the third argument to ioctl() is a valid pointer, but
540 # some ioctls use that argument as an integer
541 {
542         ioctl-with-non-pointer-param
543         Memcheck:Param
544         ioctl(generic)
545         fun:ioctl
546         fun:btrfs_reflink_with_progress
547 }
548
549 {
550         g-private-get
551         drd:ConflictingAccess
552         fun:g_private_get
553 }
554 {
555         g-private-get-helgrind
556         Helgrind:Race
557         fun:g_private_get
558 }
559
560
561 {
562         g-private-set
563         drd:ConflictingAccess
564         fun:g_private_set
565 }
566 {
567         g-private-set-helgrind
568         Helgrind:Race
569         fun:g_private_set
570 }
571
572 {
573         g-type-construct-free
574         drd:ConflictingAccess
575         fun:g_type_free_instance
576 }
577 {
578         g-type-construct-free-helgrind
579         Helgrind:Race
580         fun:g_type_free_instance
581 }
582
583 {
584         g-variant-unref
585         drd:ConflictingAccess
586         fun:g_variant_unref
587 }
588 {
589         g-variant-unref-helgrind
590         Helgrind:Race
591         fun:g_variant_unref
592 }
593
594 {
595         g-unix-signals-main
596         drd:ConflictingAccess
597         fun:_g_main_create_unix_signal_watch
598 }
599 {
600         g-unix-signals-dispatch
601         drd:ConflictingAccess
602         ...
603         fun:dispatch_unix_signals*
604 }
605 {
606         g-unix-signals-dispatch-helgrind
607         Helgrind:Race
608         ...
609         fun:dispatch_unix_signals*
610 }
611 {
612         g-unix-signals-other
613         drd:ConflictingAccess
614         fun:g_unix_signal_watch*
615 }
616 {
617         g-unix-signals-other-helgrind
618         Helgrind:Race
619         fun:g_unix_signal_watch*
620 }
621 {
622         g-unix-signals-handler
623         drd:ConflictingAccess
624         fun:g_unix_signal_handler*
625 }
626 {
627         g-unix-signals-handler-helgrind
628         Helgrind:Race
629         fun:g_unix_signal_handler*
630 }
631 {
632         g-unix-signals-worker
633         drd:ConflictingAccess
634         fun:glib_worker_main
635 }
636 {
637         g-unix-signals-worker-helgrind
638         Helgrind:Race
639         fun:glib_worker_main
640 }
641
642 {
643         g-wakeup-acknowledge
644         drd:ConflictingAccess
645         fun:read
646         fun:g_wakeup_acknowledge
647 }
648
649 {
650         g-type-fundamental
651         drd:ConflictingAccess
652         fun:g_type_fundamental
653 }
654 {
655         g-type-fundamental-helgrind
656         Helgrind:Race
657         fun:g_type_fundamental
658 }
659 {
660         g-type-class-peek-static
661         drd:ConflictingAccess
662         fun:g_type_class_peek_static
663 }
664 {
665         g-type-class-peek-static-helgrind
666         Helgrind:Race
667         fun:g_type_class_peek_static
668 }
669 {
670         g-type-is-a
671         drd:ConflictingAccess
672         ...
673         fun:g_type_is_a
674 }
675 {
676         g-type-is-a-helgrind
677         Helgrind:Race
678         ...
679         fun:g_type_is_a
680 }
681
682 {
683         g-inet-address-get-type
684         drd:ConflictingAccess
685         fun:g_inet_address_get_type
686 }
687 {
688         g-inet-address-get-type-helgrind
689         Helgrind:Race
690         fun:g_inet_address_get_type
691 }
692
693 # From: https://github.com/fredericgermain/valgrind/blob/master/glibc-2.X-drd.supp
694 {
695         drd-libc-stdio
696         drd:ConflictingAccess
697         obj:*/lib*/libc-*
698 }
699 {
700         drd-libc-recv
701         drd:ConflictingAccess
702         fun:recv
703 }
704 {
705         drd-libc-send
706         drd:ConflictingAccess
707         fun:send
708 }
709
710 # GSources do an opportunistic ref count check
711 {
712         g-source-set-ready-time
713         drd:ConflictingAccess
714         fun:g_source_set_ready_time
715 }
716 {
717         g-source-set-ready-time-helgrind
718         Helgrind:Race
719         fun:g_source_set_ready_time
720 }
721
722 {
723         g-source-iter-next
724         Helgrind:Race
725         fun:g_source_iter_next
726         fun:g_main_context_*
727         fun:g_main_context_iterate
728 }
729
730 {
731         g-object-instance-private
732         drd:ConflictingAccess
733         fun:*_get_instance_private
734 }
735 {
736         g-object-instance-private-helgrind
737         Helgrind:Race
738         fun:*_get_instance_private
739 }
740
741 # GLib legitimately calls pthread_cond_signal without a mutex held
742 {
743         g-task-thread-complete
744         drd:CondErr
745         ...
746         fun:g_cond_signal
747         fun:g_task_thread_complete
748 }
749 {
750         g-task-thread-complete
751         Helgrind:Misc
752         ...
753         fun:g_cond_signal
754         fun:g_task_thread_complete
755 }
756
757 # False positive, but I can't explain how (FIXME)
758 {
759         g-task-cond
760         Helgrind:Misc
761         ...
762         fun:g_cond_clear
763         fun:g_task_finalize
764 }
765
766 # Real race, but is_cancelled() is an opportunistic function anyway
767 {
768         g-cancellable-is-cancelled
769         Helgrind:Race
770         fun:g_cancellable_is_cancelled
771 }
772
773 # False positive
774 {
775         g-main-context-cond
776         Helgrind:Misc
777         ...
778         fun:g_cond_clear
779         fun:g_main_context_unref
780 }
781
782 # False positives
783 {
784         g-source-unlocked
785         Helgrind:Race
786         fun:g_source_*_unlocked
787 }
788 {
789         g-source-internal
790         Helgrind:Race
791         fun:g_source_*_internal
792 }
793
794 # False positive
795 {
796         g_object_real_dispose
797         Helgrind:Race
798         fun:g_object_real_dispose
799 }
800
801 # False positive
802 {
803         g_object_new_valist
804         Helgrind:Race
805         ...
806         fun:g_object_new_valist
807 }
808
809 # g_set_user_dirs() deliberately leaks the previous cached g_get_user_*() values.
810 # These will not all be reachable on exit.
811 {
812         g_set_user_dirs_str
813         Memcheck:Leak
814         match-leak-kinds:definite,reachable
815         fun:malloc
816         ...
817         fun:set_str_if_different
818         fun:g_set_user_dirs
819 }
820
821 # g_set_user_dirs() deliberately leaks the previous cached g_get_user_*() values.
822 # These will not all be reachable on exit.
823 {
824         g_set_user_dirs_strv
825         Memcheck:Leak
826         match-leak-kinds:definite,reachable
827         fun:malloc
828         ...
829         fun:set_strv_if_different
830         fun:g_set_user_dirs
831 }
832
833 # g_get_system_data_dirs() caches a one-time allocation
834 {
835         g_get_system_data_dirs
836         Memcheck:Leak
837         match-leak-kinds:reachable
838         fun:malloc
839         ...
840         fun:g_build_system_data_dirs
841         fun:g_get_system_data_dirs
842 }
843
844 # g_get_user_data_dir() caches a one-time allocation
845 {
846         g_get_user_data_dir
847         Memcheck:Leak
848         match-leak-kinds:reachable
849         fun:realloc
850         ...
851         fun:g_build_user_data_dir
852         fun:g_get_user_data_dir
853 }
854
855 # gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
856 {
857         desktop_file_dirs_malloc
858         Memcheck:Leak
859         match-leak-kinds:reachable
860         fun:malloc
861         ...
862         fun:desktop_file_dirs_lock
863 }
864
865 # gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
866 {
867         desktop_file_dirs_realloc
868         Memcheck:Leak
869         match-leak-kinds:reachable
870         fun:realloc
871         ...
872         fun:desktop_file_dirs_lock
873 }
874
875 # gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
876 {
877         desktop_file_dir_unindexed_setup_search
878         Memcheck:Leak
879         match-leak-kinds:reachable
880         fun:malloc
881         ...
882         fun:desktop_file_dir_unindexed_setup_search
883         fun:desktop_file_dir_unindexed_setup_search
884 }
885
886 # g_io_extension_point_register() caches a one-time allocation global table of @extension_points.
887 {
888         g_io_extension_point_register
889         Memcheck:Leak
890         match-leak-kinds:reachable
891         fun:calloc
892         ...
893         fun:g_io_extension_point_register
894 }
895
896 # g_strerror() caches a one-time allocation global table of @errors.
897 {
898         g_strerror
899         Memcheck:Leak
900         match-leak-kinds:reachable
901         fun:malloc
902         ...
903         fun:g_locale_to_utf8
904         fun:g_strerror
905 }
906
907 # g_socket_connection_factory_register_type() caches a one-time allocation global table of @connection_types.
908 {
909         g_socket_connection_factory_register_type
910         Memcheck:Leak
911         match-leak-kinds:reachable
912         fun:calloc
913         ...
914         fun:g_socket_connection_factory_register_type
915 }
916
917 # g_dbus_error_quark() never unregisters itself as a GDBusError domain, as it’s always available
918 {
919         g_dbus_error_quark
920         Memcheck:Leak
921         match-leak-kinds:reachable
922         fun:calloc
923         ...
924         fun:g_dbus_error_register_error_domain
925         fun:g_dbus_error_quark
926 }
927
928 # g_win32_registry_get_os_dirs_w*() caches an array of strings that is allocated only once.
929 {
930         g_win32_registry_get_os_dirs
931         Memcheck:Leak
932         match-leak-kinds:reachable,definite
933         fun:malloc
934         ...
935         fun:g_win32_registry_get_os_dirs*
936 }
937
938 # Thread-private data allocated once per thread
939 {
940         g_private_set_alloc0
941         Memcheck:Leak
942         match-leak-kinds:definite,reachable
943         fun:malloc
944         ...
945         fun:g_private_set_alloc0
946 }
947 {
948         g_private_set_alloc0-calloc
949         Memcheck:Leak
950         match-leak-kinds:definite,reachable
951         fun:calloc
952         ...
953         fun:g_private_set_alloc0
954 }
955
956 # Keys for thread-private data
957 {
958         g_private_key
959         Memcheck:Leak
960         match-leak-kinds:reachable
961         fun:malloc
962         fun:g_private_impl_new
963 }
964
965 # Thread-private GMainContext stack
966 {
967         g_main_context_push_thread_default
968         Memcheck:Leak
969         match-leak-kinds:definite,reachable
970         fun:malloc
971         ...
972         fun:g_queue_new
973         fun:g_main_context_push_thread_default
974 }
975
976 # One-time allocations for #GFileInfo attribute cache
977 {
978         g_file_info_attribute_cache
979         Memcheck:Leak
980         match-leak-kinds:reachable
981         fun:malloc
982         ...
983         fun:ensure_attribute_hash
984         ...
985         fun:g_file_*
986 }
987 {
988         g_file_info_attribute_cache2
989         Memcheck:Leak
990         match-leak-kinds:reachable
991         fun:calloc
992         ...
993         fun:ensure_attribute_hash
994         ...
995         fun:g_file_*
996 }
997 {
998         g_file_info_attribute_cache3
999         Memcheck:Leak
1000         match-leak-kinds:reachable
1001         fun:malloc
1002         ...
1003         fun:lookup_namespace
1004         ...
1005         fun:g_file_*
1006 }
1007 {
1008         g_file_info_attribute_cache4
1009         Memcheck:Leak
1010         match-leak-kinds:reachable
1011         fun:calloc
1012         ...
1013         fun:lookup_namespace
1014         ...
1015         fun:g_file_*
1016 }
1017
1018 # Cached charset
1019 {
1020         g_get_charset
1021         Memcheck:Leak
1022         match-leak-kinds:reachable
1023         fun:malloc
1024         ...
1025         fun:g_get_charset
1026 }
1027
1028 {
1029         g_get_charset_calloc
1030         Memcheck:Leak
1031         match-leak-kinds:reachable
1032         fun:calloc
1033         ...
1034         fun:g_get_charset
1035 }
1036
1037 # Global unused thread queue
1038 {
1039         g_thread_pool_unused_thread_queue
1040         Memcheck:Leak
1041         match-leak-kinds:reachable
1042         fun:malloc
1043         ...
1044         fun:g_async_queue_new_full
1045         ...
1046         fun:g_thread_pool_new
1047 }
1048
1049 # One-time program name storage
1050 {
1051         g_set_prgname
1052         Memcheck:Leak
1053         match-leak-kinds:reachable
1054         fun:malloc
1055         ...
1056         fun:g_set_prgname
1057 }
1058
1059 # Error domains hash
1060 {
1061         g_error_init
1062         Memcheck:Leak
1063         match-leak-kinds: reachable
1064         fun:malloc
1065         ...
1066         fun:g_hash_table_new_full
1067         fun:g_error_init
1068 }
1069
1070 # Error domain static registration
1071 {
1072         g_error_domain_register_static
1073         Memcheck:Leak
1074         match-leak-kinds: reachable
1075         fun:malloc
1076         ...
1077         fun:g_hash_table_insert
1078         fun:error_domain_register
1079         fun:g_error_domain_register_static
1080 }
1081
1082 {
1083         new_quark
1084         Memcheck:Leak
1085         match-leak-kinds:reachable
1086         fun:malloc
1087         ...
1088         fun:g_hash_table_insert
1089         fun:quark_new
1090 }