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