drd: Add support for C11 thrd_create()
[valgrind.git] / glibc-2.X-helgrind.supp.in
blob62492c9aafdc48f8d530d200c4fd2f5c02e376dd
1 # IMPORTANT: DO NOT EDIT glibc-2.X-helgrind.supp, as it is as a generated
2 # file.  Instead edit glibc-2.X-helgrind.supp.in.
4 # FIXME 22 Jan 09: helgrind-glibc2X-005 overlaps with a lot of
5 # other stuff.  They should be removed.
7 ##----------------------------------------------------------------------##
8 # Suppressions for the Helgrind tool when using 
9 # a glibc-2.{3,4,5,6,7,8,9} system
11 ####################################################
12 # glibc-2.X specific
13 # These are generic cover-alls which catch a lot of stuff
14 # in various combinations of ld, libc and libpthread
16 # Note this is heavyhanded and not very clever:
18 # - suppress anything that has its top frame in ld.so
19 #   That's fine, since it's mostly dynamic linking stuff,
20 #   which has various deliberate (harmless) races
22 # - suppress anything that has its top frame in libc.so.
23 #   This really isn't clever, since it could hide some 
24 #   legitimate races.  But the problem is, if we don't do
25 #   this, then loads of errors to do with stdio are reported, because
26 #   H fails to see glibc's internal locking/unlocking of FILE*s
27 #   as required by POSIX.  A better solution is needed.
29 # - some of the stdio functions in newer glibc manipulate stdio
30 #   FILE*s state through mempcpy, which we intercept, so we also need
31 #   to suppress such manipulations.
34 #   helgrind-glibc2X-001
35 #   Helgrind:Race
36 #   obj:*/lib*/ld-2.*so*
39 # helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
41 # helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
44    helgrind-glibc2X-004
45    Helgrind:Race
46    obj:@GLIBC_LIBC_PATH@
50    helgrind-glibc-io-xsputn-mempcpy
51    Helgrind:Race
52    fun:*mem*cpy
53    ...
54    fun:_IO_*xsputn*
55    obj:@GLIBC_LIBC_PATH@
59    helgrind-glibc-__printf_buffer_write
60    Helgrind:Race
61    fun:memcpy
62    fun:__printf_buffer_write
66    helgrind-glibc2X-005
67    Helgrind:Race
68    obj:@GLIBC_LIBPTHREAD_PATH@
71 # helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
73 # helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
75 # helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
77 # helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
79 # helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
81 # helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
83 # helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
85 # helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
87 # helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
89 # helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
91 # helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
93 # These are very ugly.  They are needed to suppress errors inside (eg)
94 # NPTL's pthread_cond_signal.  Why only one stack frame -- at least we
95 # should see the wrapper calling the real functions, right?
96 # Unfortunately, no: the real functions are handwritten assembly (in
97 # the glibc-2.5 sources) and does not create a proper stack frame.
98 # Therefore it's only one level of unwinding before we're back out in
99 # user code rather than the 2 levels you'd expect.
101    helgrind-glibc2X-101
102    Helgrind:Race
103    obj:@GLIBC_LIBPTHREAD_PATH@
104    fun:pthread_*
107    helgrind-glibc2X-102
108    Helgrind:Race
109    fun:mythread_wrapper
110    obj:@GLIBC_LIBPTHREAD_PATH@
113    helgrind-glibc2X-103
114    Helgrind:Race
115    fun:pthread_cond_*@@GLIBC_2.*
118    helgrind-glibc2X-104
119    Helgrind:Race
120    fun:__lll_mutex_*
123    helgrind-glibc2X-105
124    Helgrind:Race
125    fun:pthread_rwlock_*lock*
128    helgrind-glibc2X-106
129    Helgrind:Race
130    fun:__lll_lock_wait
133    helgrind-glibc2X-107
134    Helgrind:Race
135    obj:@GLIBC_LIBPTHREAD_PATH@
136    fun:sem_*
139    helgrind-glibc2X-108
140    Helgrind:Race
141    fun:clone
144    helgrind-glibc2X-109
145    Helgrind:Race
146    fun:start_thread
149    helgrind-glibc2X-110
150    Helgrind:Race
151    obj:@GLIBC_LIBC_PATH@
152    fun:pthread_*
155    helgrind-glibc2X-111
156    Helgrind:Race
157    fun:__lll_*lock_*
160    helgrind-glibc2X-113
161    Helgrind:Race
162    fun:pthread_barrier_wait*
166 ####################################################
167 # qt4 specific (GNU mangling)
170    helgrind-qt4---QMutex::lock()-QMutex::lock()
171    Helgrind:Race
172    ...
173    fun:_ZN6QMutex4lockEv
174    fun:_ZN6QMutex4lockEv
177 {                                                               
178    helgrind-qt4---QMutex::unlock()-QMutex::unlock()
179    Helgrind:Race                                                
180    ...
181    fun:_ZN6QMutex6unlockEv                                      
182    fun:_ZN6QMutex6unlockEv
186    helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
187    Helgrind:Race
188    fun:pthread_setspecific
189    fun:_ZN14QThreadPrivate5startEPv
193 ####################################################
194 # Other stuff.
196 # pthread_exit apparently calls some kind of unwind
197 # mechanism - maybe to remove some number of frames
198 # from the thread's stack, so as to get back to the 
199 # outermost frame for the thread?  Anyway..
202    helgrind---*Unwind*-...-pthread_exit
203    Helgrind:Race
204    fun:*Unwind*
205    ...
206    fun:pthread_exit
210    helgrind---...-*Unwind*-*pthread_unwind*
211    Helgrind:Race
212    ...
213    fun:*Unwind*
214    fun:*pthread_unwind*
218    helgrind---...-*Unwind*-*pthread_unwind*
219    Helgrind:Race
220    ...
221    fun:_Unwind*
222    ...
223    fun:_Unwind_Backtrace
229 ####################################################
230 # To do with thread stack allocation and deallocation?
233    helgrind---free_stacks-__deallocate_stack
234    Helgrind:Race
235    fun:free_stacks
236    fun:__deallocate_stack
240    helgrind---__deallocate_stack-start_thread-clone
241    Helgrind:Race
242    fun:__deallocate_stack
243    fun:start_thread
244    fun:clone
248 ####################################################
249 # To do with pthread_{set,get}specific
252    helgrind---pthread_setspecific
253    Helgrind:Race
254    fun:pthread_setspecific
258    helgrind---pthread_getspecific
259    Helgrind:Race
260    fun:pthread_getspecific
264 ####################################################
265 # To do with dynamic linking
267 # helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
270    helgrind---_dl_allocate_tls 
271    Helgrind:Race
272    fun:mempcpy
273    fun:_dl_allocate_tls_init
274    ...
275    fun:pthread_create@@GLIBC_2.2*
276    fun:pthread_create_WRK
277    fun:pthread_create@*
281    helgrind---_dl_allocate_tls2
282    Helgrind:Race
283    fun:memcpy
284    fun:__mempcpy_inline
285    fun:_dl_allocate_tls_init
286    ...
287    fun:pthread_create@@GLIBC_2.2*
288    fun:pthread_create_WRK
289    fun:pthread_create@*
293    helgrind---_dl_lookup_symbol_x
294    Helgrind:Race
295    ...
296    fun:_dl_lookup_symbol_x
299 ####################################################
300 # To do with GNU libgomp
303    helgrind---libgomp43-1
304    Helgrind:Race
305    fun:gomp_ordered_sync
309    helgrind---libgomp43-1
310    Helgrind:Race
311    fun:gomp_ordered_next
315    helgrind---libgomp43-1
316    Helgrind:Race
317    fun:gomp_ordered_last
320 ####################################################
321 # posix functions that are thread safe
323    helgrind---getaddrinfo
324    Helgrind:Race
325    ...
326    fun:getaddrinfo
329 # * here for dns and files variants etc.
331    helgrind---_nss_*_gethostbyname4_r
332    Helgrind:Race
333    fun:_nss_*_gethostbyname4_r