blob: d68fedfdff325ee8dc61ed6a8d61f56db448a8e5 [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.
26
sewardja0eee322009-07-31 08:46:35 +000027#{
28# helgrind-glibc2X-001
29# Helgrind:Race
tom7299d842012-02-23 12:54:50 +000030# obj:*/lib*/ld-2.*so*
sewardja0eee322009-07-31 08:46:35 +000031#}
sewardj94a9b242009-01-02 23:17:02 +000032
sewardj4f75be32008-12-29 14:46:26 +000033# helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000034
sewardj4f75be32008-12-29 14:46:26 +000035# helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000036
sewardj95386ae2007-11-09 22:50:55 +000037{
sewardjf7218152008-12-22 20:21:38 +000038 helgrind-glibc2X-004
sewardj963286e2007-11-10 12:44:56 +000039 Helgrind:Race
tom7299d842012-02-23 12:54:50 +000040 obj:*/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000041}
sewardj94a9b242009-01-02 23:17:02 +000042
sewardj95386ae2007-11-09 22:50:55 +000043{
sewardjf7218152008-12-22 20:21:38 +000044 helgrind-glibc2X-005
sewardj963286e2007-11-10 12:44:56 +000045 Helgrind:Race
tom7299d842012-02-23 12:54:50 +000046 obj:*/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000047}
sewardj94a9b242009-01-02 23:17:02 +000048
49# helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
50
sewardj4f75be32008-12-29 14:46:26 +000051# helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000052
sewardja2e66b82009-02-01 20:15:32 +000053# helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
sewardj94a9b242009-01-02 23:17:02 +000054
55# helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
56
sewardj4f75be32008-12-29 14:46:26 +000057# helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000058
59# helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
60
sewardj4f75be32008-12-29 14:46:26 +000061# helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000062
sewardj4f75be32008-12-29 14:46:26 +000063# helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000064
sewardj4f75be32008-12-29 14:46:26 +000065# helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000066
67# helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
68
sewardja2e66b82009-02-01 20:15:32 +000069# helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
sewardj95386ae2007-11-09 22:50:55 +000070
71# These are very ugly. They are needed to suppress errors inside (eg)
72# NPTL's pthread_cond_signal. Why only one stack frame -- at least we
73# should see the wrapper calling the real functions, right?
74# Unfortunately, no: the real functions are handwritten assembly (in
75# the glibc-2.5 sources) and does not create a proper stack frame.
76# Therefore it's only one level of unwinding before we're back out in
77# user code rather than the 2 levels you'd expect.
78{
sewardjf7218152008-12-22 20:21:38 +000079 helgrind-glibc2X-101
sewardj963286e2007-11-10 12:44:56 +000080 Helgrind:Race
tom7299d842012-02-23 12:54:50 +000081 obj:*/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000082 fun:pthread_*
83}
84{
sewardjf7218152008-12-22 20:21:38 +000085 helgrind-glibc2X-102
sewardj963286e2007-11-10 12:44:56 +000086 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +000087 fun:mythread_wrapper
tom7299d842012-02-23 12:54:50 +000088 obj:*/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000089}
90{
sewardjf7218152008-12-22 20:21:38 +000091 helgrind-glibc2X-103
sewardj963286e2007-11-10 12:44:56 +000092 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000093 fun:pthread_cond_*@@GLIBC_2.*
sewardj95386ae2007-11-09 22:50:55 +000094}
95{
sewardjf7218152008-12-22 20:21:38 +000096 helgrind-glibc2X-104
sewardj963286e2007-11-10 12:44:56 +000097 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +000098 fun:__lll_mutex_*
99}
100{
sewardjf7218152008-12-22 20:21:38 +0000101 helgrind-glibc2X-105
sewardj963286e2007-11-10 12:44:56 +0000102 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000103 fun:pthread_rwlock_*lock*
104}
sewardjb9354be2007-11-18 01:40:14 +0000105{
sewardjf7218152008-12-22 20:21:38 +0000106 helgrind-glibc2X-106
sewardj963286e2007-11-10 12:44:56 +0000107 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000108 fun:__lll_lock_wait
109}
sewardja8e939e2007-11-13 20:51:26 +0000110{
sewardjf7218152008-12-22 20:21:38 +0000111 helgrind-glibc2X-107
sewardja8e939e2007-11-13 20:51:26 +0000112 Helgrind:Race
tom7299d842012-02-23 12:54:50 +0000113 obj:*/lib*/libpthread-2.*so*
sewardja8e939e2007-11-13 20:51:26 +0000114 fun:sem_*
115}
sewardja1c0df32007-11-18 18:22:50 +0000116{
sewardjf7218152008-12-22 20:21:38 +0000117 helgrind-glibc2X-108
sewardja1c0df32007-11-18 18:22:50 +0000118 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000119 fun:clone
sewardja1c0df32007-11-18 18:22:50 +0000120}
121{
sewardjf7218152008-12-22 20:21:38 +0000122 helgrind-glibc2X-109
sewardja1c0df32007-11-18 18:22:50 +0000123 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000124 fun:start_thread
sewardja1c0df32007-11-18 18:22:50 +0000125}
126{
sewardjf7218152008-12-22 20:21:38 +0000127 helgrind-glibc2X-110
sewardja1c0df32007-11-18 18:22:50 +0000128 Helgrind:Race
tom7299d842012-02-23 12:54:50 +0000129 obj:*/lib*/libc-2.*so*
sewardja1c0df32007-11-18 18:22:50 +0000130 fun:pthread_*
131}
132{
sewardjf7218152008-12-22 20:21:38 +0000133 helgrind-glibc2X-111
sewardja1c0df32007-11-18 18:22:50 +0000134 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000135 fun:__lll_*lock_*
sewardj95386ae2007-11-09 22:50:55 +0000136}
137{
sewardjf7218152008-12-22 20:21:38 +0000138 helgrind-glibc2X-113
sewardj1990d5d2007-12-06 01:58:05 +0000139 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000140 fun:pthread_barrier_wait*
sewardj95386ae2007-11-09 22:50:55 +0000141}
142
sewardj13ca8a62008-12-20 09:20:33 +0000143
144####################################################
sewardjf7218152008-12-22 20:21:38 +0000145# qt4 specific (GNU mangling)
146#
sewardj95386ae2007-11-09 22:50:55 +0000147{
sewardj0f7a0292008-11-19 10:41:55 +0000148 helgrind-qt4---QMutex::lock()-QMutex::lock()
sewardj963286e2007-11-10 12:44:56 +0000149 Helgrind:Race
sewardjdcfac132009-02-25 21:28:38 +0000150 ...
sewardj95386ae2007-11-09 22:50:55 +0000151 fun:_ZN6QMutex4lockEv
152 fun:_ZN6QMutex4lockEv
153}
sewardj0f7a0292008-11-19 10:41:55 +0000154
sewardj13ca8a62008-12-20 09:20:33 +0000155{
156 helgrind-qt4---QMutex::unlock()-QMutex::unlock()
157 Helgrind:Race
sewardjdcfac132009-02-25 21:28:38 +0000158 ...
sewardj13ca8a62008-12-20 09:20:33 +0000159 fun:_ZN6QMutex6unlockEv
160 fun:_ZN6QMutex6unlockEv
161}
162
sewardj0f7a0292008-11-19 10:41:55 +0000163{
164 helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
165 Helgrind:Race
166 fun:pthread_setspecific
167 fun:_ZN14QThreadPrivate5startEPv
168}
169
sewardj357cb162008-12-13 01:18:38 +0000170
171####################################################
172# Other stuff.
173#
174# pthread_exit apparently calls some kind of unwind
175# mechanism - maybe to remove some number of frames
176# from the thread's stack, so as to get back to the
177# outermost frame for the thread? Anyway..
178
179{
180 helgrind---*Unwind*-...-pthread_exit
181 Helgrind:Race
182 fun:*Unwind*
183 ...
184 fun:pthread_exit
185}
186
187{
188 helgrind---...-*Unwind*-*pthread_unwind*
189 Helgrind:Race
190 ...
191 fun:*Unwind*
192 fun:*pthread_unwind*
193}
sewardj13ca8a62008-12-20 09:20:33 +0000194
sewardj4b03c422008-12-23 11:12:40 +0000195{
196 helgrind---...-*Unwind*-*pthread_unwind*
197 Helgrind:Race
198 ...
199 fun:_Unwind*
200 ...
201 fun:_Unwind_Backtrace
202}
203
204
205
sewardj13ca8a62008-12-20 09:20:33 +0000206
207####################################################
208# To do with thread stack allocation and deallocation?
209#
210{
211 helgrind---free_stacks-__deallocate_stack
212 Helgrind:Race
213 fun:free_stacks
214 fun:__deallocate_stack
215}
216
217{
218 helgrind---__deallocate_stack-start_thread-clone
219 Helgrind:Race
220 fun:__deallocate_stack
221 fun:start_thread
222 fun:clone
223}
224
225
226####################################################
227# To do with pthread_{set,get}specific
228#
229{
230 helgrind---pthread_setspecific
231 Helgrind:Race
232 fun:pthread_setspecific
233}
234
235{
236 helgrind---pthread_getspecific
237 Helgrind:Race
238 fun:pthread_getspecific
239}
240
241
242####################################################
243# To do with dynamic linking
244#
sewardj4f75be32008-12-29 14:46:26 +0000245# helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +0000246
bartc64bbdd2013-12-02 15:13:05 +0000247{
248 helgrind---_dl_allocate_tls
249 Helgrind:Race
250 fun:mempcpy
251 fun:_dl_allocate_tls_init
252 fun:pthread_create@@GLIBC_2.2*
253 fun:pthread_create_WRK
254 fun:pthread_create@*
255}
sewardja2e66b82009-02-01 20:15:32 +0000256
257####################################################
258# To do with GNU libgomp
259#
260{
261 helgrind---libgomp43-1
262 Helgrind:Race
263 fun:gomp_ordered_sync
264}
265
266{
267 helgrind---libgomp43-1
268 Helgrind:Race
269 fun:gomp_ordered_next
270}
271
272{
273 helgrind---libgomp43-1
274 Helgrind:Race
275 fun:gomp_ordered_last
276}