Don't call vg_assert inside sync_signalhandler_from_kernel
[valgrind.git] / glibc-2.X-helgrind.supp.in
blob2b576b982e425abfb9bb89e56c1b99df57b46664
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    ...
63    fun:__printf_buffer_write
67    helgrind-glibc2X-005
68    Helgrind:Race
69    obj:@GLIBC_LIBPTHREAD_PATH@
72 # helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
74 # helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
76 # helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
78 # helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
80 # helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
82 # helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
84 # helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
86 # helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
88 # helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
90 # helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
92 # helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
94 # These are very ugly.  They are needed to suppress errors inside (eg)
95 # NPTL's pthread_cond_signal.  Why only one stack frame -- at least we
96 # should see the wrapper calling the real functions, right?
97 # Unfortunately, no: the real functions are handwritten assembly (in
98 # the glibc-2.5 sources) and does not create a proper stack frame.
99 # Therefore it's only one level of unwinding before we're back out in
100 # user code rather than the 2 levels you'd expect.
102    helgrind-glibc2X-101
103    Helgrind:Race
104    obj:@GLIBC_LIBPTHREAD_PATH@
105    fun:pthread_*
108    helgrind-glibc2X-102
109    Helgrind:Race
110    fun:mythread_wrapper
111    obj:@GLIBC_LIBPTHREAD_PATH@
114    helgrind-glibc2X-103
115    Helgrind:Race
116    fun:pthread_cond_*@@GLIBC_2.*
119    helgrind-glibc2X-104
120    Helgrind:Race
121    fun:__lll_mutex_*
124    helgrind-glibc2X-105
125    Helgrind:Race
126    fun:pthread_rwlock_*lock*
129    helgrind-glibc2X-106
130    Helgrind:Race
131    fun:__lll_lock_wait
134    helgrind-glibc2X-107
135    Helgrind:Race
136    obj:@GLIBC_LIBPTHREAD_PATH@
137    fun:sem_*
140    helgrind-glibc2X-108
141    Helgrind:Race
142    fun:clone
145    helgrind-glibc2X-109
146    Helgrind:Race
147    fun:start_thread
150    helgrind-glibc2X-110
151    Helgrind:Race
152    obj:@GLIBC_LIBC_PATH@
153    fun:pthread_*
156    helgrind-glibc2X-111
157    Helgrind:Race
158    fun:__lll_*lock_*
161    helgrind-glibc2X-113
162    Helgrind:Race
163    fun:pthread_barrier_wait*
167 ####################################################
168 # qt4 specific (GNU mangling)
171    helgrind-qt4---QMutex::lock()-QMutex::lock()
172    Helgrind:Race
173    ...
174    fun:_ZN6QMutex4lockEv
175    fun:_ZN6QMutex4lockEv
178 {                                                               
179    helgrind-qt4---QMutex::unlock()-QMutex::unlock()
180    Helgrind:Race                                                
181    ...
182    fun:_ZN6QMutex6unlockEv                                      
183    fun:_ZN6QMutex6unlockEv
187    helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
188    Helgrind:Race
189    fun:pthread_setspecific
190    fun:_ZN14QThreadPrivate5startEPv
194 ####################################################
195 # Other stuff.
197 # pthread_exit apparently calls some kind of unwind
198 # mechanism - maybe to remove some number of frames
199 # from the thread's stack, so as to get back to the 
200 # outermost frame for the thread?  Anyway..
203    helgrind---*Unwind*-...-pthread_exit
204    Helgrind:Race
205    fun:*Unwind*
206    ...
207    fun:pthread_exit
211    helgrind---...-*Unwind*-*pthread_unwind*
212    Helgrind:Race
213    ...
214    fun:*Unwind*
215    fun:*pthread_unwind*
219    helgrind---...-*Unwind*-*pthread_unwind*
220    Helgrind:Race
221    ...
222    fun:_Unwind*
223    ...
224    fun:_Unwind_Backtrace
230 ####################################################
231 # To do with thread stack allocation and deallocation?
234    helgrind---free_stacks-__deallocate_stack
235    Helgrind:Race
236    fun:free_stacks
237    fun:__deallocate_stack
241    helgrind---__deallocate_stack-start_thread-clone
242    Helgrind:Race
243    fun:__deallocate_stack
244    fun:start_thread
245    fun:clone
249 ####################################################
250 # To do with pthread_{set,get}specific
253    helgrind---pthread_setspecific
254    Helgrind:Race
255    fun:pthread_setspecific
259    helgrind---pthread_getspecific
260    Helgrind:Race
261    fun:pthread_getspecific
265 ####################################################
266 # To do with dynamic linking
268 # helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
271    helgrind---_dl_allocate_tls 
272    Helgrind:Race
273    fun:mempcpy
274    fun:_dl_allocate_tls_init
275    ...
276    fun:pthread_create@@GLIBC_2.2*
277    fun:pthread_create_WRK
278    fun:pthread_create@*
282    helgrind---_dl_allocate_tls2
283    Helgrind:Race
284    fun:memcpy
285    fun:__mempcpy_inline
286    fun:_dl_allocate_tls_init
287    ...
288    fun:pthread_create@@GLIBC_2.2*
289    fun:pthread_create_WRK
290    fun:pthread_create@*
294    helgrind---_dl_lookup_symbol_x
295    Helgrind:Race
296    ...
297    fun:_dl_lookup_symbol_x
300 ####################################################
301 # To do with GNU libgomp
304    helgrind---libgomp43-1
305    Helgrind:Race
306    fun:gomp_ordered_sync
310    helgrind---libgomp43-1
311    Helgrind:Race
312    fun:gomp_ordered_next
316    helgrind---libgomp43-1
317    Helgrind:Race
318    fun:gomp_ordered_last
321 ####################################################
322 # posix functions that are thread safe
324    helgrind---getaddrinfo
325    Helgrind:Race
326    ...
327    fun:getaddrinfo
330 # * here for dns and files variants etc.
332    helgrind---_nss_*_gethostbyname4_r
333    Helgrind:Race
334    fun:_nss_*_gethostbyname4_r
338    helgrind--- libnss without debuginfo
339    Helgrind:Race
340    ...
341    obj:/usr/lib/*/libnss_mdns4*.so.*