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 ####################################################
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
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
50 helgrind-glibc-io-xsputn-mempcpy
59 helgrind-glibc-__printf_buffer_write
63 fun:__printf_buffer_write
67 helgrind-glibc-__printf_buffer_write2
71 fun:__printf_buffer_write
77 obj:@GLIBC_LIBPTHREAD_PATH@
80 # helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
82 # helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
84 # helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
86 # helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
88 # helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
90 # helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
92 # helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
94 # helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
96 # helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
98 # helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
100 # helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
102 # These are very ugly. They are needed to suppress errors inside (eg)
103 # NPTL's pthread_cond_signal. Why only one stack frame -- at least we
104 # should see the wrapper calling the real functions, right?
105 # Unfortunately, no: the real functions are handwritten assembly (in
106 # the glibc-2.5 sources) and does not create a proper stack frame.
107 # Therefore it's only one level of unwinding before we're back out in
108 # user code rather than the 2 levels you'd expect.
112 obj:@GLIBC_LIBPTHREAD_PATH@
119 obj:@GLIBC_LIBPTHREAD_PATH@
124 fun:pthread_cond_*@@GLIBC_2.*
134 fun:pthread_rwlock_*lock*
144 obj:@GLIBC_LIBPTHREAD_PATH@
160 obj:@GLIBC_LIBC_PATH@
171 fun:pthread_barrier_wait*
175 ####################################################
176 # qt4 specific (GNU mangling)
179 helgrind-qt4---QMutex::lock()-QMutex::lock()
182 fun:_ZN6QMutex4lockEv
183 fun:_ZN6QMutex4lockEv
187 helgrind-qt4---QMutex::unlock()-QMutex::unlock()
190 fun:_ZN6QMutex6unlockEv
191 fun:_ZN6QMutex6unlockEv
195 helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
197 fun:pthread_setspecific
198 fun:_ZN14QThreadPrivate5startEPv
202 ####################################################
205 # pthread_exit apparently calls some kind of unwind
206 # mechanism - maybe to remove some number of frames
207 # from the thread's stack, so as to get back to the
208 # outermost frame for the thread? Anyway..
211 helgrind---*Unwind*-...-pthread_exit
219 helgrind---...-*Unwind*-*pthread_unwind*
227 helgrind---...-*Unwind*-*pthread_unwind*
232 fun:_Unwind_Backtrace
238 ####################################################
239 # To do with thread stack allocation and deallocation?
242 helgrind---free_stacks-__deallocate_stack
245 fun:__deallocate_stack
249 helgrind---__deallocate_stack-start_thread-clone
251 fun:__deallocate_stack
257 ####################################################
258 # To do with pthread_{set,get}specific
261 helgrind---pthread_setspecific
263 fun:pthread_setspecific
267 helgrind---pthread_getspecific
269 fun:pthread_getspecific
273 ####################################################
274 # To do with dynamic linking
276 # helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
279 helgrind---_dl_allocate_tls
282 fun:_dl_allocate_tls_init
284 fun:pthread_create@@GLIBC_2.2*
285 fun:pthread_create_WRK
290 helgrind---_dl_allocate_tls2
294 fun:_dl_allocate_tls_init
296 fun:pthread_create@@GLIBC_2.2*
297 fun:pthread_create_WRK
302 helgrind---_dl_lookup_symbol_x
305 fun:_dl_lookup_symbol_x
308 ####################################################
309 # To do with GNU libgomp
312 helgrind---libgomp43-1
314 fun:gomp_ordered_sync
318 helgrind---libgomp43-1
320 fun:gomp_ordered_next
324 helgrind---libgomp43-1
326 fun:gomp_ordered_last
329 ####################################################
330 # posix functions that are thread safe
332 helgrind---getaddrinfo
339 helgrind---gethostbyname2_r
342 fun:*gethostbyname2_r
345 # * here for dns and files variants etc.
347 helgrind---_nss_*_gethostbyname4_r
349 fun:_nss_*_gethostbyname4_r
353 helgrind--- libnss without debuginfo
356 obj:/usr/lib/*/libnss_mdns4*.so.*