blob: 307d29915647c28f505a7f369e59678145c86b87 [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
sewardj95386ae2007-11-09 22:50:55 +000027{
sewardjf7218152008-12-22 20:21:38 +000028 helgrind-glibc2X-001
sewardj963286e2007-11-10 12:44:56 +000029 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000030 obj:/lib*/ld-2.*so*
sewardj95386ae2007-11-09 22:50:55 +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
sewardjf7218152008-12-22 20:21:38 +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
sewardjf7218152008-12-22 20:21:38 +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
sewardj95386ae2007-11-09 22:50:55 +000053{
sewardjf7218152008-12-22 20:21:38 +000054 helgrind-glibc2X-008
sewardj963286e2007-11-10 12:44:56 +000055 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000056 obj:/lib*/libpthread-2.*so*
57 obj:/lib*/libc-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000058}
sewardj94a9b242009-01-02 23:17:02 +000059
60# helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
61
sewardj4f75be32008-12-29 14:46:26 +000062# helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000063
64# helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
65
sewardj4f75be32008-12-29 14:46:26 +000066# helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000067
sewardj4f75be32008-12-29 14:46:26 +000068# helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000069
sewardj4f75be32008-12-29 14:46:26 +000070# helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +000071
72# helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
73
sewardj4b03c422008-12-23 11:12:40 +000074{
75 helgrind-glibc2X-016
76 Helgrind:Race
77 obj:/lib*/libpthread-2.*so*
78 obj:/lib*/ld-2.*so*
sewardj4b03c422008-12-23 11:12:40 +000079}
sewardj95386ae2007-11-09 22:50:55 +000080
81# These are very ugly. They are needed to suppress errors inside (eg)
82# NPTL's pthread_cond_signal. Why only one stack frame -- at least we
83# should see the wrapper calling the real functions, right?
84# Unfortunately, no: the real functions are handwritten assembly (in
85# the glibc-2.5 sources) and does not create a proper stack frame.
86# Therefore it's only one level of unwinding before we're back out in
87# user code rather than the 2 levels you'd expect.
88{
sewardjf7218152008-12-22 20:21:38 +000089 helgrind-glibc2X-101
sewardj963286e2007-11-10 12:44:56 +000090 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +000091 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000092 fun:pthread_*
93}
94{
sewardjf7218152008-12-22 20:21:38 +000095 helgrind-glibc2X-102
sewardj963286e2007-11-10 12:44:56 +000096 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +000097 fun:mythread_wrapper
sewardjf7218152008-12-22 20:21:38 +000098 obj:/lib*/libpthread-2.*so*
sewardj95386ae2007-11-09 22:50:55 +000099}
100{
sewardjf7218152008-12-22 20:21:38 +0000101 helgrind-glibc2X-103
sewardj963286e2007-11-10 12:44:56 +0000102 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000103 fun:pthread_cond_*@@GLIBC_2.*
sewardj95386ae2007-11-09 22:50:55 +0000104}
105{
sewardjf7218152008-12-22 20:21:38 +0000106 helgrind-glibc2X-104
sewardj963286e2007-11-10 12:44:56 +0000107 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000108 fun:__lll_mutex_*
109}
110{
sewardjf7218152008-12-22 20:21:38 +0000111 helgrind-glibc2X-105
sewardj963286e2007-11-10 12:44:56 +0000112 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000113 fun:pthread_rwlock_*lock*
114}
sewardjb9354be2007-11-18 01:40:14 +0000115{
sewardjf7218152008-12-22 20:21:38 +0000116 helgrind-glibc2X-106
sewardj963286e2007-11-10 12:44:56 +0000117 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000118 fun:__lll_lock_wait
119}
sewardja8e939e2007-11-13 20:51:26 +0000120{
sewardjf7218152008-12-22 20:21:38 +0000121 helgrind-glibc2X-107
sewardja8e939e2007-11-13 20:51:26 +0000122 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000123 obj:/lib*/libpthread-2.*so*
sewardja8e939e2007-11-13 20:51:26 +0000124 fun:sem_*
125}
sewardja1c0df32007-11-18 18:22:50 +0000126{
sewardjf7218152008-12-22 20:21:38 +0000127 helgrind-glibc2X-108
sewardja1c0df32007-11-18 18:22:50 +0000128 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000129 fun:clone
sewardja1c0df32007-11-18 18:22:50 +0000130}
131{
sewardjf7218152008-12-22 20:21:38 +0000132 helgrind-glibc2X-109
sewardja1c0df32007-11-18 18:22:50 +0000133 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000134 fun:start_thread
sewardja1c0df32007-11-18 18:22:50 +0000135}
136{
sewardjf7218152008-12-22 20:21:38 +0000137 helgrind-glibc2X-110
sewardja1c0df32007-11-18 18:22:50 +0000138 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000139 obj:/lib*/libc-2.*so*
sewardja1c0df32007-11-18 18:22:50 +0000140 fun:pthread_*
141}
142{
sewardjf7218152008-12-22 20:21:38 +0000143 helgrind-glibc2X-111
sewardja1c0df32007-11-18 18:22:50 +0000144 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000145 fun:__lll_*lock_*
sewardj95386ae2007-11-09 22:50:55 +0000146}
147{
sewardjf7218152008-12-22 20:21:38 +0000148 helgrind-glibc2X-112
sewardj963286e2007-11-10 12:44:56 +0000149 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000150 fun:pthread_create@*
sewardj95386ae2007-11-09 22:50:55 +0000151}
152{
sewardjf7218152008-12-22 20:21:38 +0000153 helgrind-glibc2X-113
sewardj1990d5d2007-12-06 01:58:05 +0000154 Helgrind:Race
sewardjf7218152008-12-22 20:21:38 +0000155 fun:pthread_barrier_wait*
sewardj95386ae2007-11-09 22:50:55 +0000156}
157
sewardj13ca8a62008-12-20 09:20:33 +0000158
159####################################################
sewardjf7218152008-12-22 20:21:38 +0000160# qt4 specific (GNU mangling)
161#
sewardj95386ae2007-11-09 22:50:55 +0000162{
sewardj0f7a0292008-11-19 10:41:55 +0000163 helgrind-qt4---QMutex::lock()-QMutex::lock()
sewardj963286e2007-11-10 12:44:56 +0000164 Helgrind:Race
sewardj95386ae2007-11-09 22:50:55 +0000165 fun:_ZN6QMutex4lockEv
166 fun:_ZN6QMutex4lockEv
167}
sewardj0f7a0292008-11-19 10:41:55 +0000168
sewardj13ca8a62008-12-20 09:20:33 +0000169{
170 helgrind-qt4---QMutex::unlock()-QMutex::unlock()
171 Helgrind:Race
172 fun:_ZN6QMutex6unlockEv
173 fun:_ZN6QMutex6unlockEv
174}
175
sewardj0f7a0292008-11-19 10:41:55 +0000176{
177 helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
178 Helgrind:Race
179 fun:pthread_setspecific
180 fun:_ZN14QThreadPrivate5startEPv
181}
182
sewardj357cb162008-12-13 01:18:38 +0000183
184####################################################
185# Other stuff.
186#
187# pthread_exit apparently calls some kind of unwind
188# mechanism - maybe to remove some number of frames
189# from the thread's stack, so as to get back to the
190# outermost frame for the thread? Anyway..
191
192{
193 helgrind---*Unwind*-...-pthread_exit
194 Helgrind:Race
195 fun:*Unwind*
196 ...
197 fun:pthread_exit
198}
199
200{
201 helgrind---...-*Unwind*-*pthread_unwind*
202 Helgrind:Race
203 ...
204 fun:*Unwind*
205 fun:*pthread_unwind*
206}
sewardj13ca8a62008-12-20 09:20:33 +0000207
sewardj4b03c422008-12-23 11:12:40 +0000208{
209 helgrind---...-*Unwind*-*pthread_unwind*
210 Helgrind:Race
211 ...
212 fun:_Unwind*
213 ...
214 fun:_Unwind_Backtrace
215}
216
217
218
sewardj13ca8a62008-12-20 09:20:33 +0000219
220####################################################
221# To do with thread stack allocation and deallocation?
222#
223{
224 helgrind---free_stacks-__deallocate_stack
225 Helgrind:Race
226 fun:free_stacks
227 fun:__deallocate_stack
228}
229
230{
231 helgrind---__deallocate_stack-start_thread-clone
232 Helgrind:Race
233 fun:__deallocate_stack
234 fun:start_thread
235 fun:clone
236}
237
238
239####################################################
240# To do with pthread_{set,get}specific
241#
242{
243 helgrind---pthread_setspecific
244 Helgrind:Race
245 fun:pthread_setspecific
246}
247
248{
249 helgrind---pthread_getspecific
250 Helgrind:Race
251 fun:pthread_getspecific
252}
253
254
255####################################################
256# To do with dynamic linking
257#
sewardj4f75be32008-12-29 14:46:26 +0000258# helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
sewardj94a9b242009-01-02 23:17:02 +0000259