Add suppressions for some glibc 2.2 linuxthreads issues. Bug #111006.
[ambi/valgrind.git] / glibc-2.2.supp
1
2 ##----------------------------------------------------------------------##
3
4 # Errors to suppress by default with glibc 2.2.4 / 2.2.5
5
6 # Format of this file is:
7 # {
8 #     name_of_suppression
9 #     tool_name:supp_kind
10 #     (optional extra info for some suppression types)
11 #     caller0 name, or /name/of/so/file.so
12 #     caller1 name, or ditto
13 #     (optionally: caller2 name)
14 #     (optionally: caller3 name)
15 #  }
16 #
17 # For Memcheck, the supp_kinds are:
18 #
19 #     Param Value1 Value2 Value4 Value8 Value16
20 #     Free Addr1 Addr2 Addr4 Addr8 Addr16
21 #     Cond (previously known as Value0)
22 #
23 # and the optional extra info is:
24 #     if Param: name of system call param
25 #     if Free: name of free-ing fn)
26
27 #-------- For SuSE 8.2 (gcc 3.3, glibc 2.3.2)
28 {
29    __GI___stpcpy/*
30    Memcheck:Cond
31    fun:__GI___stpcpy
32    fun:*
33 }
34 {
35    strlen/__GI__dl_open/dlopen_doit
36    Memcheck:Cond
37    fun:strlen
38    fun:__GI__dl_open
39    fun:dlopen_doit
40 }
41 {
42    strlen/_dl_signal_cerror/_dl_lookup_symbol_internal/do_dlsym
43    Memcheck:Cond
44    fun:_dl_signal_cerror
45    fun:_dl_lookup_symbol_internal
46    fun:do_dlsym
47 }
48
49
50 #-------- For R H 8.0
51 {
52    elf_dynamic_do_rel.7/_dl_relocate_object_internal/dl_open_worker(Cond)
53    Memcheck:Cond
54    fun:elf_dynamic_do_rel.7
55    fun:_dl_relocate_object_internal
56    fun:dl_open_worker
57 }
58
59
60 #-------- For R H 7.3 on i686
61 {
62    _dl_relocate_object*/*libc-2.2.?.so/_dl_catch_error*(Cond)
63    Memcheck:Cond
64    fun:_dl_relocate_object*
65    obj:*libc-2.2.?.so
66    fun:_dl_catch_error*
67 }
68 {
69    _dl_relocate_object_internal
70    Memcheck:Cond
71    fun:_dl_relocate_object_internal
72 }
73 {
74    index/*-2.2.5.so/*-2.2.5.so
75    Memcheck:Cond
76    fun:index
77    obj:*-2.2.5.so
78    obj:*-2.2.5.so
79 }
80
81
82 #-------- SuSE 8.1 stuff (gcc-3.2, glibc-2.2.5 + SuSE's hacks)
83 {
84    __stpcpy/*
85    Memcheck:Cond
86    fun:__stpcpy
87    fun:*
88 }
89 {
90    strlen/decompose_rpath/_dl_map_object
91    Memcheck:Cond
92    fun:strlen
93    fun:decompose_rpath
94    fun:_dl_map_object
95 }
96 {
97    strlen/_dl_sym/dlsym_doit
98    Memcheck:Cond
99    fun:strlen
100    fun:_dl_sym
101    fun:dlsym_doit
102 }
103 {
104    trecurse/__gconv_release_shlib(Addr4)
105    Addrcheck,Memcheck:Addr4
106    fun:trecurse
107    fun:__gconv_release_shlib
108 }
109 {
110    do_release_shlib/trecurse(Addr4)
111    Addrcheck,Memcheck:Addr4
112    fun:do_release_shlib
113    fun:trecurse
114 }
115
116 #-------- R H Limbo (glibc-2.2.90) stuff
117 {
118    elf_dynamic_do_rela.8/_dl_relocate_object_internal
119    Memcheck:Cond
120    fun:elf_dynamic_do_rela.8
121    fun:_dl_relocate_object_internal
122 }
123
124 {
125    __strnlen/_nl_make_l10nflist(Cond)
126    Memcheck:Cond
127    fun:__strnlen
128    fun:_nl_make_l10nflist
129 }
130
131 {
132    __strnlen/*vfprintf*
133    Memcheck:Cond
134    fun:__strnlen
135    fun:*vfprintf*
136 }
137
138 {
139    libXaw.so.7.0(Cond)
140    Memcheck:Cond
141    obj:*libXaw.so.7.0
142 }
143
144 #-------- Suppress errors appearing as a result of calling
145 #-------- __libc_freeres()
146
147 {
148    __twalk/*(Addr4)
149    Addrcheck,Memcheck:Addr4
150    fun:__twalk
151 }
152
153 {
154    do_release_shlib/__twalk(Addr4)
155    Addrcheck,Memcheck:Addr4
156    fun:do_release_shlib
157    fun:__twalk
158 }
159
160 {
161    __libc_freeres/free_mem/free(Free)
162    Addrcheck,Memcheck:Free
163    fun:free
164    fun:free_mem
165    fun:__libc_freeres
166 }
167
168 #-------- Data races
169 {
170    _dl_lookup_symbol/fixup/_dl_runtime_resolve
171    Helgrind:Eraser
172    fun:_dl_lookup_symbol
173    fun:fixup
174    fun:_dl_runtime_resolve
175 }
176
177 {
178    _dl_lookup_symbol_internal/fixup/_dl_runtime_resolve
179    Helgrind:Eraser
180    fun:_dl_lookup_symbol_internal
181    fun:fixup
182    fun:_dl_runtime_resolve
183 }
184
185 {
186    _dl_lookup_versioned_symbol/fixup/_dl_runtime_resolve
187    Helgrind:Eraser
188    fun:_dl_lookup_versioned_symbol
189    fun:fixup
190    fun:_dl_runtime_resolve
191 }
192
193 {
194    _dl_lookup_versioned_symbol_internal/fixup/_dl_runtime_resolve
195    Helgrind:Eraser
196    fun:_dl_lookup_versioned_symbol_internal
197    fun:fixup
198    fun:_dl_runtime_resolve
199 }
200
201 {
202    _dl_fini/exit/__libc_start_main
203    Helgrind:Eraser
204    fun:_dl_fini
205    fun:exit
206    fun:__libc_start_main
207 }
208
209 {
210    _dl_map_object_deps/dl_open_worker/_dl_catch_error/_dl_open
211    Helgrind:Eraser
212    fun:_dl_map_object_deps
213    fun:dl_open_worker
214    fun:_dl_catch_error
215    fun:_dl_open
216 }
217
218 {
219    _dl_map_object_deps_internal/dl_open_worker/_dl_catch_error_internal/_dl_open
220    Helgrind:Eraser
221    fun:_dl_map_object_deps_internal
222    fun:dl_open_worker
223    fun:_dl_catch_error_internal
224    fun:_dl_open
225 }
226
227 #-------- Threading bugs?
228 # glibc 'knows' that destroying a locked mutex will unlock it
229 {
230    pthread_error/pthread_mutex_destroy/__closedir
231    core:PThread
232    fun:pthread_error
233    fun:pthread_mutex_destroy
234    fun:__closedir
235 }
236
237 {
238    pthread_error/pthread_mutex_destroy/_IO_default_finish
239    core:PThread
240    fun:pthread_error
241    fun:pthread_mutex_destroy
242    fun:_IO_default_finish*
243 }
244
245 {
246    pthread_mutex_unlock/_IO_funlockfile
247    core:PThread
248    fun:pthread_mutex_unlock
249    fun:_IO_funlockfile
250 }
251
252 # even more glibc suppressions ?
253 {
254    libc-2.2.4.so/libc-2.2.4.so/libc-2.2.4.so(Cond)
255    Memcheck:Cond
256    obj:*libc-2.2.?.so
257    obj:*libc-2.2.?.so
258    obj:*libc-2.2.?.so
259 }
260 {
261    libc-2.2.4.so/libc-2.2.4.so/libc-2.2.4.so(Value4)
262    Memcheck:Value4
263    obj:*libc-2.2.?.so
264    obj:*libc-2.2.?.so
265    obj:*libc-2.2.?.so
266 }
267
268 ##### glibc 2.2.5 stuff perhaps?
269 ##### suppressions for coolo
270 {
271    strchr/dl_open_worker(Cond)
272    Memcheck:Cond
273    fun:strchr
274    fun:dl_open_worker
275 }
276
277    __rawmemchr(Cond)
278    Memcheck:Cond 
279    fun:__rawmemchr
280
281
282    _IO_vfprintf/__strnlen(Cond)
283    Memcheck:Cond 
284    fun:__strnlen
285    fun:_IO_vfprintf
286
287
288    __strchrnul/gethostbyname*(Cond)
289    Memcheck:Cond 
290    fun:__strchrnul
291    fun:gethostbyname*
292
293
294
295 ##----
296 {
297    strlen/*dl_map_object*(Cond)
298    Memcheck:Cond
299    fun:strlen
300    fun:*dl_map_object*
301 }
302
303 {
304    strlen/*dl_open_worker*(Cond)
305    Memcheck:Cond
306    fun:strlen
307    fun:*dl_open_worker*
308 }
309
310 {
311    *rawmemchr*/*nss*(Cond)
312    Memcheck:Cond
313    fun:*rawmemchr*
314    fun:*nss*
315 }
316
317 {
318    *strchrnul*/*nss*(Cond)
319    Memcheck:Cond
320    fun:*strchrnul*
321    fun:*nss*
322 }
323
324 # gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)
325 # on Red Hat 7.2 (x86) miscompiles __mpn_construct_double in
326 # __mpn_construct_double (../sysdeps/ieee754/dbl-64/mpn2dbl.c:45)
327 # (glibc-2.2.4) to read and write below %esp.  Hence the following
328 # two:
329 {
330    __mpn_construct_double/*(Addr4)
331    Addrcheck,Memcheck:Addr4
332    fun:__mpn_construct_double
333    fun:*
334 }
335 {
336    __mpn_construct_double/*(Addr8)
337    Addrcheck,Memcheck:Addr8
338    fun:__mpn_construct_double
339    fun:*
340 }
341
342 # More of the same (gcc bug, I'm pretty sure)
343 {
344    __fabs/*(Addr4)
345    Addrcheck,Memcheck:Addr4
346    fun:__fabs
347    fun:*
348 }
349 {
350    __fabs/*(Addr8)
351    Addrcheck,Memcheck:Addr8
352    fun:__fabs
353    fun:*
354 }
355
356
357 # Not sure what this is about ... but anyway
358 {
359    pthread_sighandler/*(Addr4)
360    Addrcheck,Memcheck:Addr4
361    fun:pthread_sighandler
362    fun:*
363 }
364
365
366 # More glibc stuff, AFAICS
367
368 {
369    __strnlen/__argz_stringify/_nl_make_l10nflist(Cond)
370    Memcheck:Cond
371    fun:__strnlen
372    fun:__argz_stringify
373    fun:_nl_make_l10nflist
374 }
375
376 #--------------
377 {
378    _dl_relocate_object*/dl_open_worker/_dl_catch_error*(Cond)
379    Memcheck:Cond
380    fun:_dl_relocate_object*
381    fun:dl_open_worker
382    fun:_dl_catch_error*
383 }
384 {
385    _dl_relocate_object/libc-2.2.4.so/_dl_catch_error(Cond)
386    Memcheck:Cond
387    fun:_dl_relocate_object
388    obj:*libc-2.2.?.so
389    fun:_dl_catch_error
390 }
391 {
392    _dl_relocate_object/dl_main(Cond)
393    Memcheck:Cond
394    fun:_dl_relocate_object
395    fun:dl_main
396 }
397 {
398    _dl_relocate_object_internal/dl_main(Cond)
399    Memcheck:Cond
400    fun:_dl_relocate_object_internal
401    fun:dl_main
402 }
403
404 {
405    strrchr/_dl_map_object_from_fd/_dl_map_object(Cond)
406    Memcheck:Cond
407    fun:strrchr
408    fun:_dl_map_object_from_fd
409    fun:_dl_map_object
410 }
411
412 {
413    _dl_start/ld-2.2.4.so(Cond)
414    Memcheck:Cond
415    fun:_dl_start
416    obj:/lib/ld-2.2.4.so
417 }
418
419 #-------- glibc 2.2.5/ Debian 3.0
420 {
421    _dl_start(Cond)
422    Memcheck:Cond
423    fun:_dl_start
424 }
425
426 {
427    _dl_start(Cond)
428    Memcheck:Cond
429    fun:_dl_relocate_object
430 }
431
432 #-------------------
433 {
434    socketcall.connect(serv_addr)/connect/*
435    Addrcheck,Memcheck:Param
436    socketcall.connect(serv_addr)
437    fun:connect
438    fun:*
439 }
440 {
441    socketcall.connect(serv_addr)/libc-2.2.4.so/libc-2.2.4.so
442    Addrcheck,Memcheck:Param
443    socketcall.connect(serv_addr)
444    obj:*libc-2.2.?.so
445    obj:*libc-2.2.?.so
446 }
447
448 #----------------------
449 {
450    write(buf)/write/libX11.so.6.2/libX11.so.6.2(Param)
451    Addrcheck,Memcheck:Param
452    write(buf)
453    fun:write
454    obj:/usr/X11R6/lib/libX11.so.6.2
455    obj:/usr/X11R6/lib/libX11.so.6.2
456 }
457 {
458    write(buf)/libc-2.2.4.so/libX11.so.6.2/libX11.so.6.2(Param)
459    Addrcheck,Memcheck:Param
460    write(buf)
461    obj:*libc-2.2.?.so
462    obj:/usr/X11R6/lib/libX11.so.6.2
463    obj:/usr/X11R6/lib/libX11.so.6.2
464 }
465
466 #{
467 #   llseek(result)/lseek64/_IO_file_seek(Param)
468 #   Param
469 #   llseek(result)
470 #   fun:lseek64
471 #   fun:_IO_file_seek
472 #}
473
474 {
475    writev(vector[...])/__writev/libX11.so.6.2/libX11.so.6.2
476    Addrcheck,Memcheck:Param
477    writev(vector[...])
478    fun:__writev
479    obj:/usr/X11R6/lib/libX11.so.6.2
480    obj:/usr/X11R6/lib/libX11.so.6.2
481 }
482
483 #----------------
484 {
485    __rawmemchr/libXt.so.6.0/libXt.so.6.0
486    Memcheck:Cond
487    fun:__rawmemchr
488    obj:/usr/X11R6/lib/libXt.so.6.0
489    obj:/usr/X11R6/lib/libXt.so.6.0
490 }
491 {
492    libc-2.2.4.so/libXt.so.6.0/libXt.so.6.0
493    Memcheck:Cond
494    obj:*libc-2.2.?.so
495    obj:/usr/X11R6/lib/libXt.so.6.0
496    obj:/usr/X11R6/lib/libXt.so.6.0
497 }
498
499 ## Bug in PRE(sys_clone), really.  Some args are not used.
500 {
501    LinuxThread clone use (child_tidptr)
502    Memcheck:Param
503    clone(child_tidptr)
504    fun:clone
505    fun:__pthread_initialize_manager
506    fun:pthread_create@@GLIBC_2.2.5
507 }
508
509 ## LinuxThreads manager writes messages containing undefined bytes
510 {
511    LinuxThreads: write/pthread_create
512    Memcheck:Param
513    write(buf)
514    fun:pthread_create@@GLIBC_2.1
515 }
516 {
517    LinuxThreads: write/pthread_create
518    Memcheck:Param
519    write(buf)
520    fun:write
521    fun:pthread_create@@GLIBC_2.1
522 }
523 {
524    LinuxThreads: write/pthread_onexit_process
525    Memcheck:Param
526    write(buf)
527    fun:write
528    fun:pthread_onexit_process
529    fun:exit
530 }
531 {
532    LinuxThreads: write/pthread_join
533    Memcheck:Param
534    write(buf)
535    fun:write
536    fun:pthread_join
537 }
538 {
539    LinuxThreads: write/pthread_create
540    Memcheck:Param
541    write(buf)
542    fun:write
543    fun:pthread_create@@GLIBC_2.2.5
544 }
545 {
546    LinuxThreads: write/__pthread_initialize_manager/pthread_create
547    Memcheck:Param
548    write(buf)
549    fun:write
550    fun:__pthread_initialize_manager
551    fun:pthread_create@@GLIBC_2.2.5
552 }