blob: 7ebd2c4b4e567a2be19d9e92f67fef88e53a8a55 [file] [log] [blame]
sewardj95386ae2007-11-09 22:50:55 +00001
sewardj141383e2009-01-22 20:46:51 +00002# FIXME 22 Jan 09: helgrind-glibc2X-005 overlaps with a lot of
3# other stuff. They should be removed.
4
sewardj95386ae2007-11-09 22:50:55 +00005##----------------------------------------------------------------------##
6# Suppressions for the Helgrind tool when using
sewardjf7218152008-12-22 20:21:38 +00007# a glibc-2.{3,4,5,6,7,8,9} system
sewardj95386ae2007-11-09 22:50:55 +00008
sewardjf7218152008-12-22 20:21:38 +00009####################################################
10# glibc-2.X specific
11# These are generic cover-alls which catch a lot of stuff
12# in various combinations of ld, libc and libpthread
sewardj95386ae2007-11-09 22:50:55 +000013#
sewardj94a9b242009-01-02 23:17:02 +000014# Note this is heavyhanded and not very clever:
15#
16# - suppress anything that has its top frame in ld.so
17# That's fine, since it's mostly dynamic linking stuff,
18# which has various deliberate (harmless) races
19#
20# - suppress anything that has its top frame in libc.so.
21# This really isn't clever, since it could hide some
22# legitimate races. But the problem is, if we don't do
23# this, then loads of errors to do with stdio are reported, because
24# H fails to see glibc's internal locking/unlocking of FILE*s
25# as required by POSIX. A better solution is needed.
mjw653256c2015-09-04 10:52:01 +000026#
27# - some of the stdio functions in newer glibc manipulate stdio
28# FILE*s state through mempcpy, which we intercept, so we also need
29# to suppress such manipulations.
sewardj94a9b242009-01-02 23:17:02 +000030
sewardja0eee322009-07-31 08:46:35 +000031#{
32# helgrind-glibc2X-001
33# Helgrind:Race
tom7299d842012-02-23 12:54:50 +000034# obj:*/lib*/ld-2.*so*
sewardja0eee322009-07-31 08:46:35 +000035#}
sewardj94a9b242009-01-02 23:17:02 +000036
sewardj4f75be32008-12-29 14:46:26 +000037# helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000038
sewardj4f75be32008-12-29 14:46:26 +000039# helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000040
sewardj95386ae2007-11-09 22:50:55 +000041{
sewardjf7218152008-12-22 20:21:38 +000042 helgrind-glibc2X-004
sewardj963286e2007-11-10 12:44:56 +000043 Helgrind:Race
tom7299d842012-02-23 12:54:50 +000044 obj:*/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000045}
sewardj94a9b242009-01-02 23:17:02 +000046
sewardj95386ae2007-11-09 22:50:55 +000047{
mjw653256c2015-09-04 10:52:01 +000048 helgrind-glibc-io-xsputn-mempcpy
49 Helgrind:Race
50 fun:__GI_mempcpy
51 fun:_IO_*xsputn*
52 obj:*/lib*/libc-2.*so*
53}
54
55{
sewardjf7218152008-12-22 20:21:38 +000056 helgrind-glibc2X-005
sewardj963286e2007-11-10 12:44:56 +000057 Helgrind:Race
tom7299d842012-02-23 12:54:50 +000058 obj:*/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000059}
sewardj94a9b242009-01-02 23:17:02 +000060
61# helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
62
sewardj4f75be32008-12-29 14:46:26 +000063# helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000064
sewardja2e66b82009-02-01 20:15:32 +000065# helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
sewardj94a9b242009-01-02 23:17:02 +000066
67# helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
68
sewardj4f75be32008-12-29 14:46:26 +000069# helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000070
71# helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
72
sewardj4f75be32008-12-29 14:46:26 +000073# helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000074
sewardj4f75be32008-12-29 14:46:26 +000075# helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000076
sewardj4f75be32008-12-29 14:46:26 +000077# helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000078
79# helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
80
sewardja2e66b82009-02-01 20:15:32 +000081# helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
sewardj95386ae2007-11-09 22:50:55 +000082
83# These are very ugly. They are needed to suppress errors inside (eg)
84# NPTL's pthread_cond_signal. Why only one stack frame -- at least we
85# should see the wrapper calling the real functions, right?
86# Unfortunately, no: the real functions are handwritten assembly (in
87# the glibc-2.5 sources) and does not create a proper stack frame.
88# Therefore it's only one level of unwinding before we're back out in
89# user code rather than the 2 levels you'd expect.
90{
sewardjf7218152008-12-22 20:21:38 +000091 helgrind-glibc2X-101
sewardj963286e2007-11-10 12:44:56 +000092 Helgrind:Race
tom7299d842012-02-23 12:54:50 +000093 obj:*/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000094 fun:pthread_*
95}
96{
sewardjf7218152008-12-22 20:21:38 +000097 helgrind-glibc2X-102
sewardj963286e2007-11-10 12:44:56 +000098 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +000099 fun:mythread_wrapper
tom7299d842012-02-23 12:54:50 +0000100 obj:*/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +0000101}
102{
sewardjf7218152008-12-22 20:21:38 +0000103 helgrind-glibc2X-103
sewardj963286e2007-11-10 12:44:56 +0000104 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000105 fun:pthread_cond_*@@GLIBC_2.*
sewardj95386ae2007-11-09 22:50:55 +0000106}
107{
sewardjf7218152008-12-22 20:21:38 +0000108 helgrind-glibc2X-104
sewardj963286e2007-11-10 12:44:56 +0000109 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000110 fun:__lll_mutex_*
111}
112{
sewardjf7218152008-12-22 20:21:38 +0000113 helgrind-glibc2X-105
sewardj963286e2007-11-10 12:44:56 +0000114 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000115 fun:pthread_rwlock_*lock*
116}
sewardjb9354be2007-11-18 01:40:14 +0000117{
sewardjf7218152008-12-22 20:21:38 +0000118 helgrind-glibc2X-106
sewardj963286e2007-11-10 12:44:56 +0000119 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000120 fun:__lll_lock_wait
121}
sewardja8e939e2007-11-13 20:51:26 +0000122{
sewardjf7218152008-12-22 20:21:38 +0000123 helgrind-glibc2X-107
sewardja8e939e2007-11-13 20:51:26 +0000124 Helgrind:Race
tom7299d842012-02-23 12:54:50 +0000125 obj:*/lib*/libpthread-2.*so*
sewardja8e939e2007-11-13 20:51:26 +0000126 fun:sem_*
127}
sewardja1c0df32007-11-18 18:22:50 +0000128{
sewardjf7218152008-12-22 20:21:38 +0000129 helgrind-glibc2X-108
sewardja1c0df32007-11-18 18:22:50 +0000130 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000131 fun:clone
sewardja1c0df32007-11-18 18:22:50 +0000132}
133{
sewardjf7218152008-12-22 20:21:38 +0000134 helgrind-glibc2X-109
sewardja1c0df32007-11-18 18:22:50 +0000135 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000136 fun:start_thread
sewardja1c0df32007-11-18 18:22:50 +0000137}
138{
sewardjf7218152008-12-22 20:21:38 +0000139 helgrind-glibc2X-110
sewardja1c0df32007-11-18 18:22:50 +0000140 Helgrind:Race
tom7299d842012-02-23 12:54:50 +0000141 obj:*/lib*/libc-2.*so*
sewardja1c0df32007-11-18 18:22:50 +0000142 fun:pthread_*
143}
144{
sewardjf7218152008-12-22 20:21:38 +0000145 helgrind-glibc2X-111
sewardja1c0df32007-11-18 18:22:50 +0000146 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000147 fun:__lll_*lock_*
sewardj95386ae2007-11-09 22:50:55 +0000148}
149{
sewardjf7218152008-12-22 20:21:38 +0000150 helgrind-glibc2X-113
sewardj1990d5d2007-12-06 01:58:05 +0000151 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000152 fun:pthread_barrier_wait*
sewardj95386ae2007-11-09 22:50:55 +0000153}
154
sewardj13ca8a62008-12-20 09:20:33 +0000155
156####################################################
sewardjf7218152008-12-22 20:21:38 +0000157# qt4 specific (GNU mangling)
158#
sewardj95386ae2007-11-09 22:50:55 +0000159{
sewardj0f7a0292008-11-19 10:41:55 +0000160 helgrind-qt4---QMutex::lock()-QMutex::lock()
sewardj963286e2007-11-10 12:44:56 +0000161 Helgrind:Race
sewardjdcfac132009-02-25 21:28:38 +0000162 ...
sewardj95386ae2007-11-09 22:50:55 +0000163 fun:_ZN6QMutex4lockEv
164 fun:_ZN6QMutex4lockEv
165}
sewardj0f7a0292008-11-19 10:41:55 +0000166
sewardj13ca8a62008-12-20 09:20:33 +0000167{
168 helgrind-qt4---QMutex::unlock()-QMutex::unlock()
169 Helgrind:Race
sewardjdcfac132009-02-25 21:28:38 +0000170 ...
sewardj13ca8a62008-12-20 09:20:33 +0000171 fun:_ZN6QMutex6unlockEv
172 fun:_ZN6QMutex6unlockEv
173}
174
sewardj0f7a0292008-11-19 10:41:55 +0000175{
176 helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
177 Helgrind:Race
178 fun:pthread_setspecific
179 fun:_ZN14QThreadPrivate5startEPv
180}
181
sewardj357cb162008-12-13 01:18:38 +0000182
183####################################################
184# Other stuff.
185#
186# pthread_exit apparently calls some kind of unwind
187# mechanism - maybe to remove some number of frames
188# from the thread's stack, so as to get back to the
189# outermost frame for the thread? Anyway..
190
191{
192 helgrind---*Unwind*-...-pthread_exit
193 Helgrind:Race
194 fun:*Unwind*
195 ...
196 fun:pthread_exit
197}
198
199{
200 helgrind---...-*Unwind*-*pthread_unwind*
201 Helgrind:Race
202 ...
203 fun:*Unwind*
204 fun:*pthread_unwind*
205}
sewardj13ca8a62008-12-20 09:20:33 +0000206
sewardj4b03c422008-12-23 11:12:40 +0000207{
208 helgrind---...-*Unwind*-*pthread_unwind*
209 Helgrind:Race
210 ...
211 fun:_Unwind*
212 ...
213 fun:_Unwind_Backtrace
214}
215
216
217
sewardj13ca8a62008-12-20 09:20:33 +0000218
219####################################################
220# To do with thread stack allocation and deallocation?
221#
222{
223 helgrind---free_stacks-__deallocate_stack
224 Helgrind:Race
225 fun:free_stacks
226 fun:__deallocate_stack
227}
228
229{
230 helgrind---__deallocate_stack-start_thread-clone
231 Helgrind:Race
232 fun:__deallocate_stack
233 fun:start_thread
234 fun:clone
235}
236
237
238####################################################
239# To do with pthread_{set,get}specific
240#
241{
242 helgrind---pthread_setspecific
243 Helgrind:Race
244 fun:pthread_setspecific
245}
246
247{
248 helgrind---pthread_getspecific
249 Helgrind:Race
250 fun:pthread_getspecific
251}
252
253
254####################################################
255# To do with dynamic linking
256#
sewardj4f75be32008-12-29 14:46:26 +0000257# helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +0000258
bartc64bbdd2013-12-02 15:13:05 +0000259{
260 helgrind---_dl_allocate_tls
261 Helgrind:Race
262 fun:mempcpy
263 fun:_dl_allocate_tls_init
philippe7efa1652014-09-02 20:03:34 +0000264 ...
bartc64bbdd2013-12-02 15:13:05 +0000265 fun:pthread_create@@GLIBC_2.2*
266 fun:pthread_create_WRK
267 fun:pthread_create@*
268}
sewardja2e66b82009-02-01 20:15:32 +0000269
Elliott Hughesed398002017-06-21 14:41:24 -0700270{
271 helgrind---_dl_allocate_tls2
272 Helgrind:Race
273 fun:memcpy
274 fun:__mempcpy_inline
275 fun:_dl_allocate_tls_init
276 ...
277 fun:pthread_create@@GLIBC_2.2*
278 fun:pthread_create_WRK
279 fun:pthread_create@*
280}
281
sewardja2e66b82009-02-01 20:15:32 +0000282####################################################
283# To do with GNU libgomp
284#
285{
286 helgrind---libgomp43-1
287 Helgrind:Race
288 fun:gomp_ordered_sync
289}
290
291{
292 helgrind---libgomp43-1
293 Helgrind:Race
294 fun:gomp_ordered_next
295}
296
297{
298 helgrind---libgomp43-1
299 Helgrind:Race
300 fun:gomp_ordered_last
301}