Imported Upstream version 2.51.4
[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://bugzilla.gnome.org/enter_bug.cgi?product=glib
21
22 {
23         gnutls-init-calloc
24         Memcheck:Leak
25         fun:calloc
26         ...
27         fun:gtls_gnutls_init
28 }
29
30 {
31         gnutls-init-realloc
32         Memcheck:Leak
33         fun:realloc
34         ...
35         fun:gtls_gnutls_init
36 }
37
38 {
39         g-tls-backend-gnutls-init
40         Memcheck:Leak
41         fun:g_once_impl
42         fun:g_tls_backend_gnutls_init
43 }
44
45 {
46         p11-tokens-init
47         Memcheck:Leak
48         fun:calloc
49         ...
50         fun:create_tokens_inlock
51         fun:initialize_module_inlock_reentrant
52 }
53
54 {
55         gobject-init-malloc
56         Memcheck:Leak
57         fun:malloc
58         ...
59         fun:gobject_init_ctor
60 }
61
62 {
63         gobject-init-realloc
64         Memcheck:Leak
65         fun:realloc
66         ...
67         fun:gobject_init_ctor
68 }
69
70 {
71         gobject-init-calloc
72         Memcheck:Leak
73         fun:calloc
74         ...
75         fun:gobject_init_ctor
76 }
77
78 {
79         g-type-register-dynamic
80         Memcheck:Leak
81         fun:malloc
82         ...
83         fun:g_type_register_dynamic
84 }
85
86 {
87         g-type-register-static
88         Memcheck:Leak
89         fun:malloc
90         ...
91         fun:g_type_register_static
92 }
93
94 {
95         g-type-register-static-realloc
96         Memcheck:Leak
97         fun:realloc
98         ...
99         fun:g_type_register_static
100 }
101
102 {
103         g-type-register-static-calloc
104         Memcheck:Leak
105         fun:calloc
106         ...
107         fun:g_type_register_static
108 }
109
110 {
111         g-type-add-interface-dynamic
112         Memcheck:Leak
113         fun:malloc
114         ...
115         fun:g_type_add_interface_dynamic
116 }
117
118 {
119         g-type-add-interface-static
120         Memcheck:Leak
121         fun:malloc
122         ...
123         fun:g_type_add_interface_static
124 }
125
126 {
127         g-test-rand-init
128         Memcheck:Leak
129         fun:calloc
130         ...
131         fun:g_rand_new_with_seed_array
132         fun:test_run_seed
133         ...
134         fun:g_test_run
135 }
136
137 {
138         g-test-rand-init2
139         Memcheck:Leak
140         fun:calloc
141         ...
142         fun:g_rand_new_with_seed_array
143         ...
144         fun:get_global_random
145         ...
146         fun:g_test_init
147 }
148
149 {
150         g-quark-table-new
151         Memcheck:Leak
152         fun:g_hash_table_new
153         ...
154         fun:quark_new
155 }
156
157 {
158         g-quark-table-resize
159         Memcheck:Leak
160         fun:g_hash_table_resize
161         ...
162         fun:quark_new
163 }
164
165 {
166         g-type-interface-init
167         Memcheck:Leak
168         fun:malloc
169         ...
170         fun:type_iface_vtable_base_init_Wm
171 }
172
173 {
174         g-type-class-init
175         Memcheck:Leak
176         fun:calloc
177         ...
178         fun:type_class_init_Wm
179 }
180
181 {
182         g-io-module-default-singleton-malloc
183         Memcheck:Leak
184         fun:malloc
185         ...
186         fun:g_type_create_instance
187         ...
188         fun:_g_io_module_get_default
189 }
190
191 {
192         g-io-module-default-singleton-module
193         Memcheck:Leak
194         fun:calloc
195         ...
196         fun:g_module_open
197         ...
198         fun:_g_io_module_get_default
199 }
200
201 {
202         g-get-language-names
203         Memcheck:Leak
204         fun:malloc
205         ...
206         fun:g_get_language_names
207 }
208
209 {
210         g-static-mutex
211         Memcheck:Leak
212         fun:malloc
213         ...
214         fun:g_static_mutex_get_mutex_impl
215 }
216
217 {
218         g-system-thread-init
219         Memcheck:Leak
220         fun:calloc
221         ...
222         fun:g_system_thread_new
223 }
224
225 {
226         g-io-module-default-proxy-resolver-gnome
227         Memcheck:Leak
228         fun:calloc
229         ...
230         fun:g_proxy_resolver_gnome_init
231         ...
232         fun:_g_io_module_get_default
233 }
234
235 {
236         g-private-get
237         drd:ConflictingAccess
238         fun:g_private_get
239 }
240 {
241         g-private-get-helgrind
242         Helgrind:Race
243         fun:g_private_get
244 }
245
246
247 {
248         g-private-set
249         drd:ConflictingAccess
250         fun:g_private_set
251 }
252 {
253         g-private-set-helgrind
254         Helgrind:Race
255         fun:g_private_set
256 }
257
258 {
259         g-type-construct-free
260         drd:ConflictingAccess
261         fun:g_type_free_instance
262 }
263 {
264         g-type-construct-free-helgrind
265         Helgrind:Race
266         fun:g_type_free_instance
267 }
268
269 {
270         g-variant-unref
271         drd:ConflictingAccess
272         fun:g_variant_unref
273 }
274 {
275         g-variant-unref-helgrind
276         Helgrind:Race
277         fun:g_variant_unref
278 }
279
280 {
281         g-unix-signals-main
282         drd:ConflictingAccess
283         fun:_g_main_create_unix_signal_watch
284 }
285 {
286         g-unix-signals-dispatch
287         drd:ConflictingAccess
288         ...
289         fun:dispatch_unix_signals*
290 }
291 {
292         g-unix-signals-dispatch-helgrind
293         Helgrind:Race
294         ...
295         fun:dispatch_unix_signals*
296 }
297 {
298         g-unix-signals-other
299         drd:ConflictingAccess
300         fun:g_unix_signal_watch*
301 }
302 {
303         g-unix-signals-other-helgrind
304         Helgrind:Race
305         fun:g_unix_signal_watch*
306 }
307 {
308         g-unix-signals-handler
309         drd:ConflictingAccess
310         fun:g_unix_signal_handler*
311 }
312 {
313         g-unix-signals-handler-helgrind
314         Helgrind:Race
315         fun:g_unix_signal_handler*
316 }
317 {
318         g-unix-signals-worker
319         drd:ConflictingAccess
320         fun:glib_worker_main
321 }
322 {
323         g-unix-signals-worker-helgrind
324         Helgrind:Race
325         fun:glib_worker_main
326 }
327
328 {
329         g-wakeup-acknowledge
330         drd:ConflictingAccess
331         fun:read
332         fun:g_wakeup_acknowledge
333 }
334
335 {
336         g-type-fundamental
337         drd:ConflictingAccess
338         fun:g_type_fundamental
339 }
340 {
341         g-type-fundamental-helgrind
342         Helgrind:Race
343         fun:g_type_fundamental
344 }
345 {
346         g-type-class-peek-static
347         drd:ConflictingAccess
348         fun:g_type_class_peek_static
349 }
350 {
351         g-type-class-peek-static-helgrind
352         Helgrind:Race
353         fun:g_type_class_peek_static
354 }
355 {
356         g-type-is-a
357         drd:ConflictingAccess
358         ...
359         fun:g_type_is_a
360 }
361 {
362         g-type-is-a-helgrind
363         Helgrind:Race
364         ...
365         fun:g_type_is_a
366 }
367
368 {
369         g-inet-address-get-type
370         drd:ConflictingAccess
371         fun:g_inet_address_get_type
372 }
373 {
374         g-inet-address-get-type-helgrind
375         Helgrind:Race
376         fun:g_inet_address_get_type
377 }
378
379 # From: https://github.com/fredericgermain/valgrind/blob/master/glibc-2.X-drd.supp
380 {
381         drd-libc-stdio
382         drd:ConflictingAccess
383         obj:*/lib*/libc-*
384 }
385 {
386         drd-libc-recv
387         drd:ConflictingAccess
388         fun:recv
389 }
390 {
391         drd-libc-send
392         drd:ConflictingAccess
393         fun:send
394 }
395
396 # GSources do an opportunistic ref count check
397 {
398         g-source-set-ready-time
399         drd:ConflictingAccess
400         fun:g_source_set_ready_time
401 }
402 {
403         g-source-set-ready-time-helgrind
404         Helgrind:Race
405         fun:g_source_set_ready_time
406 }
407
408 {
409         g-source-iter-next
410         Helgrind:Race
411         fun:g_source_iter_next
412         fun:g_main_context_*
413         fun:g_main_context_iterate
414 }
415
416 {
417         g-object-instance-private
418         drd:ConflictingAccess
419         fun:*_get_instance_private
420 }
421 {
422         g-object-instance-private-helgrind
423         Helgrind:Race
424         fun:*_get_instance_private
425 }
426
427 # GLib legitimately calls pthread_cond_signal without a mutex held
428 {
429         g-task-thread-complete
430         drd:CondErr
431         ...
432         fun:g_cond_signal
433         fun:g_task_thread_complete
434 }
435 {
436         g-task-thread-complete
437         Helgrind:Misc
438         ...
439         fun:g_cond_signal
440         fun:g_task_thread_complete
441 }
442
443 # False positive, but I can't explain how (FIXME)
444 {
445         g-task-cond
446         Helgrind:Misc
447         ...
448         fun:g_cond_clear
449         fun:g_task_finalize
450 }
451
452 # Real race, but is_cancelled() is an opportunistic function anyway
453 {
454         g-cancellable-is-cancelled
455         Helgrind:Race
456         fun:g_cancellable_is_cancelled
457 }
458
459 # False positive
460 {
461         g-main-context-cond
462         Helgrind:Misc
463         ...
464         fun:g_cond_clear
465         fun:g_main_context_unref
466 }
467
468 # False positives
469 {
470         g-source-unlocked
471         Helgrind:Race
472         fun:g_source_*_unlocked
473 }
474 {
475         g-source-internal
476         Helgrind:Race
477         fun:g_source_*_internal
478 }
479
480 # False positive
481 {
482         g_object_real_dispose
483         Helgrind:Race
484         fun:g_object_real_dispose
485 }
486
487 # False positive
488 {
489         g_object_new_valist
490         Helgrind:Race
491         ...
492         fun:g_object_new_valist
493 }