vgdb: Handle EAGAIN in read_buf
[valgrind.git] / glibc-2.X-helgrind.supp.in
blob0f76ad0e9a2101afec0f744e141cc87c81cda9fa
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-glibc2X-005
60    Helgrind:Race
61    obj:@GLIBC_LIBPTHREAD_PATH@
64 # helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
66 # helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
68 # helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
70 # helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
72 # helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
74 # helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
76 # helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
78 # helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
80 # helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
82 # helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
84 # helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
86 # These are very ugly.  They are needed to suppress errors inside (eg)
87 # NPTL's pthread_cond_signal.  Why only one stack frame -- at least we
88 # should see the wrapper calling the real functions, right?
89 # Unfortunately, no: the real functions are handwritten assembly (in
90 # the glibc-2.5 sources) and does not create a proper stack frame.
91 # Therefore it's only one level of unwinding before we're back out in
92 # user code rather than the 2 levels you'd expect.
94    helgrind-glibc2X-101
95    Helgrind:Race
96    obj:@GLIBC_LIBPTHREAD_PATH@
97    fun:pthread_*
100    helgrind-glibc2X-102
101    Helgrind:Race
102    fun:mythread_wrapper
103    obj:@GLIBC_LIBPTHREAD_PATH@
106    helgrind-glibc2X-103
107    Helgrind:Race
108    fun:pthread_cond_*@@GLIBC_2.*
111    helgrind-glibc2X-104
112    Helgrind:Race
113    fun:__lll_mutex_*
116    helgrind-glibc2X-105
117    Helgrind:Race
118    fun:pthread_rwlock_*lock*
121    helgrind-glibc2X-106
122    Helgrind:Race
123    fun:__lll_lock_wait
126    helgrind-glibc2X-107
127    Helgrind:Race
128    obj:@GLIBC_LIBPTHREAD_PATH@
129    fun:sem_*
132    helgrind-glibc2X-108
133    Helgrind:Race
134    fun:clone
137    helgrind-glibc2X-109
138    Helgrind:Race
139    fun:start_thread
142    helgrind-glibc2X-110
143    Helgrind:Race
144    obj:@GLIBC_LIBC_PATH@
145    fun:pthread_*
148    helgrind-glibc2X-111
149    Helgrind:Race
150    fun:__lll_*lock_*
153    helgrind-glibc2X-113
154    Helgrind:Race
155    fun:pthread_barrier_wait*
159 ####################################################
160 # qt4 specific (GNU mangling)
163    helgrind-qt4---QMutex::lock()-QMutex::lock()
164    Helgrind:Race
165    ...
166    fun:_ZN6QMutex4lockEv
167    fun:_ZN6QMutex4lockEv
170 {                                                               
171    helgrind-qt4---QMutex::unlock()-QMutex::unlock()
172    Helgrind:Race                                                
173    ...
174    fun:_ZN6QMutex6unlockEv                                      
175    fun:_ZN6QMutex6unlockEv
179    helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
180    Helgrind:Race
181    fun:pthread_setspecific
182    fun:_ZN14QThreadPrivate5startEPv
186 ####################################################
187 # Other stuff.
189 # pthread_exit apparently calls some kind of unwind
190 # mechanism - maybe to remove some number of frames
191 # from the thread's stack, so as to get back to the 
192 # outermost frame for the thread?  Anyway..
195    helgrind---*Unwind*-...-pthread_exit
196    Helgrind:Race
197    fun:*Unwind*
198    ...
199    fun:pthread_exit
203    helgrind---...-*Unwind*-*pthread_unwind*
204    Helgrind:Race
205    ...
206    fun:*Unwind*
207    fun:*pthread_unwind*
211    helgrind---...-*Unwind*-*pthread_unwind*
212    Helgrind:Race
213    ...
214    fun:_Unwind*
215    ...
216    fun:_Unwind_Backtrace
222 ####################################################
223 # To do with thread stack allocation and deallocation?
226    helgrind---free_stacks-__deallocate_stack
227    Helgrind:Race
228    fun:free_stacks
229    fun:__deallocate_stack
233    helgrind---__deallocate_stack-start_thread-clone
234    Helgrind:Race
235    fun:__deallocate_stack
236    fun:start_thread
237    fun:clone
241 ####################################################
242 # To do with pthread_{set,get}specific
245    helgrind---pthread_setspecific
246    Helgrind:Race
247    fun:pthread_setspecific
251    helgrind---pthread_getspecific
252    Helgrind:Race
253    fun:pthread_getspecific
257 ####################################################
258 # To do with dynamic linking
260 # helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
263    helgrind---_dl_allocate_tls 
264    Helgrind:Race
265    fun:mempcpy
266    fun:_dl_allocate_tls_init
267    ...
268    fun:pthread_create@@GLIBC_2.2*
269    fun:pthread_create_WRK
270    fun:pthread_create@*
274    helgrind---_dl_allocate_tls2
275    Helgrind:Race
276    fun:memcpy
277    fun:__mempcpy_inline
278    fun:_dl_allocate_tls_init
279    ...
280    fun:pthread_create@@GLIBC_2.2*
281    fun:pthread_create_WRK
282    fun:pthread_create@*
285 ####################################################
286 # To do with GNU libgomp
289    helgrind---libgomp43-1
290    Helgrind:Race
291    fun:gomp_ordered_sync
295    helgrind---libgomp43-1
296    Helgrind:Race
297    fun:gomp_ordered_next
301    helgrind---libgomp43-1
302    Helgrind:Race
303    fun:gomp_ordered_last