blob: b8c69f9f395144fb5c0d041913500baf37d45969 [file] [log] [blame]
bart9e4554c2009-08-02 07:46:43 +00001#
2# Suppression patterns for ld, the dynamic loader.
3#
4
5# Suppress all data races triggered by ld.
sewardjaf44c822007-11-25 14:01:38 +00006{
bart9e4554c2009-08-02 07:46:43 +00007 drd-ld
bartef1b9722008-07-04 15:34:23 +00008 drd:ConflictingAccess
sewardj8b09d4f2007-12-04 21:27:18 +00009 obj:/lib*/ld-*.so
sewardjaf44c822007-11-25 14:01:38 +000010}
bart9e4554c2009-08-02 07:46:43 +000011
12#
13# Suppression patterns for libc.
14#
15
16# Suppress all data races where the topmost frame is inside libc.so. Although
17# this could hide some real data races, unfortunately this is the only way to
18# not report any false positives on stdio functions. The glibc functions
19# manipulating FILE objects use locking primitives that cannot be intercepted
20# easily. See also the definitions of _IO_lock_lock() etc. in the file
21# nptl/sysdeps/pthread/bits/stdio-lock.h in the glibc source tree.
sewardjaf44c822007-11-25 14:01:38 +000022{
bart9e4554c2009-08-02 07:46:43 +000023 drd-libc-stdio
bart15c67b42009-01-29 09:57:22 +000024 drd:ConflictingAccess
25 obj:/lib*/libc-*
26}
bart9e4554c2009-08-02 07:46:43 +000027
28#
29# Suppression patterns for libstdc++, the implementation of the standard C++
30# library included with the gcc compiler.
31#
32# Note: several versions of the libstdc++ library (4.2.2, 4.3.2, 4.4.0, 4.5.0
33# and their predecessors) contain an implementation of the std::string class
34# that triggers conflicting memory accesses. See also
35# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40518
36#
37
38# {
39# drd-libstdc++-std::string::string()
40# drd:ConflictingAccess
41# fun:_ZNSsC1ERKSs
42# }
43
44#
45# Suppression patterns for libpthread.
46#
47
bart15c67b42009-01-29 09:57:22 +000048{
bart9e4554c2009-08-02 07:46:43 +000049 drd-libpthread-pthread_create
bartef1b9722008-07-04 15:34:23 +000050 drd:ConflictingAccess
bart00408ca2008-11-17 18:22:10 +000051 ...
bartebca7862008-03-09 19:21:14 +000052 fun:pthread_create*
53}
54{
bart0e08b102009-08-02 08:35:05 +000055 drd-libpthread-pthread_join
56 drd:ConflictingAccess
57 fun:pthread_join
58 fun:pthread_join
59}
60{
61 drd-libpthread-__deallocate_stack
bartef1b9722008-07-04 15:34:23 +000062 drd:ConflictingAccess
barta39b9a02008-11-17 17:57:15 +000063 ...
bartcea0e952008-03-01 10:50:45 +000064 fun:__deallocate_stack
bartcea0e952008-03-01 10:50:45 +000065}
66{
bart0e08b102009-08-02 08:35:05 +000067 drd-libpthread-__free_tcb
68 drd:ConflictingAccess
69 ...
70 fun:__free_tcb
71}
72{
bart9e4554c2009-08-02 07:46:43 +000073 drd-libpthread-pthread_detach
bartef1b9722008-07-04 15:34:23 +000074 drd:ConflictingAccess
sewardjaf44c822007-11-25 14:01:38 +000075 fun:pthread_detach
76 fun:pthread_detach
77}
78{
bart9e4554c2009-08-02 07:46:43 +000079 drd-libpthread-_Unwind_ForcedUnwind
bart81db8d42008-09-27 12:43:52 +000080 drd:ConflictingAccess
bartb98b2d52009-07-10 06:48:13 +000081 ...
82 fun:_Unwind_ForcedUnwind
bart81db8d42008-09-27 12:43:52 +000083}
84{
bart9e4554c2009-08-02 07:46:43 +000085 drd-libpthread-_Unwind_Resume
bartf0c61c22008-09-27 13:14:06 +000086 drd:ConflictingAccess
bartb98b2d52009-07-10 06:48:13 +000087 ...
bart9e4554c2009-08-02 07:46:43 +000088 fun:_Unwind_Resume
barta238ee52008-09-27 13:23:41 +000089}
bart9e4554c2009-08-02 07:46:43 +000090
91#
92# Suppression patterns for libgomp.
93#
94
95# Unfortunately many statements in libgomp trigger conflicting accesses. It is
96# not clear to me which of these are safe and which ones not. See also
97# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362
barta238ee52008-09-27 13:23:41 +000098{
bart9e4554c2009-08-02 07:46:43 +000099 drd-libgomp
bartef1b9722008-07-04 15:34:23 +0000100 drd:ConflictingAccess
bart459caeb2008-03-11 19:46:45 +0000101 obj:/usr/lib*/libgomp.so*
bart459caeb2008-03-11 19:46:45 +0000102}
bart9e4554c2009-08-02 07:46:43 +0000103
104#
105# Suppression patterns for libX11.
106#
107
bartdd7a30d2008-03-22 17:36:23 +0000108{
bart9e4554c2009-08-02 07:46:43 +0000109 drd-libX11-XCreateFontSet
bartef1b9722008-07-04 15:34:23 +0000110 drd:CondErr
bart9483fd32008-07-01 14:13:25 +0000111 fun:pthread_cond_init*
112 fun:_XReply
113 fun:XListFontsWithInfo
114 obj:/usr/lib*/libX11.so*
115 fun:XCreateOC
116 fun:XCreateFontSet
117}
bart9e4554c2009-08-02 07:46:43 +0000118
119#
120# Suppression patterns for libxcb.
121#
122
bart9483fd32008-07-01 14:13:25 +0000123{
bart9e4554c2009-08-02 07:46:43 +0000124 drd-libxcb-xcb_wait_for_reply
bartef1b9722008-07-04 15:34:23 +0000125 drd:CondErr
bartdd7a30d2008-03-22 17:36:23 +0000126 fun:pthread_cond_destroy*
127 fun:xcb_wait_for_reply
128}
bart9e4554c2009-08-02 07:46:43 +0000129
130#
131# Suppression patterns for libglib.
132#
133
barte53fb262008-07-08 09:29:19 +0000134{
bart9e4554c2009-08-02 07:46:43 +0000135 drd-libglib-access-g_threads_got_initialized
barte53fb262008-07-08 09:29:19 +0000136 drd:ConflictingAccess
barta99ab012008-12-27 09:19:01 +0000137 ...
barte53fb262008-07-08 09:29:19 +0000138 fun:g_slice_alloc
139 fun:g_ptr_array_sized_new
barte53fb262008-07-08 09:29:19 +0000140}
141{
bart9e4554c2009-08-02 07:46:43 +0000142 drd-libglib-access-g_threads_got_initialized
barte53fb262008-07-08 09:29:19 +0000143 drd:ConflictingAccess
144 fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext
145 fun:_ZN20QEventDispatcherGlibC1EP7QObject
146 obj:/usr/lib*/libQtCore.so.4.*
147 obj:/usr/lib*/libQtCore.so.4.*
148}
149{
bart9e4554c2009-08-02 07:46:43 +0000150 drd-libglib-access-g_mem_initialized
barte53fb262008-07-08 09:29:19 +0000151 drd:ConflictingAccess
152 fun:g_malloc0
153}
154{
bart9e4554c2009-08-02 07:46:43 +0000155 drd-libglib-g_private_get_posix_impl
barte53fb262008-07-08 09:29:19 +0000156 drd:ConflictingAccess
157 fun:g_private_get_posix_impl
158}
159{
bart9e4554c2009-08-02 07:46:43 +0000160 drd-libglib-g_private_set_posix_impl
barte53fb262008-07-08 09:29:19 +0000161 drd:ConflictingAccess
162 fun:g_private_set_posix_impl
163}
164{
bart9e4554c2009-08-02 07:46:43 +0000165 drd-libglib-g_get_language_names
barta99ab012008-12-27 09:19:01 +0000166 drd:ConflictingAccess
167 fun:g_slice_free_chain_with_offset
barta99ab012008-12-27 09:19:01 +0000168}
bart9e4554c2009-08-02 07:46:43 +0000169
170#
171# Suppression patterns for libQtCore.
172#
173
barta99ab012008-12-27 09:19:01 +0000174{
bart9e4554c2009-08-02 07:46:43 +0000175 drd-libQtCore-deref-that-calls-QThreadData-destructor
bartddead322009-02-14 15:47:53 +0000176 drd:ConflictingAccess
177 fun:_ZN11QThreadDataD1Ev
178 fun:_ZN11QThreadData5derefEv
179 obj:/usr/lib*/libQtCore.so.4.*
180}
181{
bart9e4554c2009-08-02 07:46:43 +0000182 drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList
barteb339152008-07-29 13:01:16 +0000183 drd:ConflictingAccess
184 obj:/usr/lib*/libQtCore.so.4.*
185 fun:_ZN11QMetaObject8activateEP7QObjectiiPPv
186 fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv
187}
188{
bart9e4554c2009-08-02 07:46:43 +0000189 drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
barte53fb262008-07-08 09:29:19 +0000190 drd:ConflictingAccess
191 fun:_ZN14QReadWriteLock12lockForWriteEv
192 fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
193 fun:_ZN7QObjectD2Ev
barte53fb262008-07-08 09:29:19 +0000194}
bartf0d65952008-08-02 10:03:37 +0000195{
bart9e4554c2009-08-02 07:46:43 +0000196 drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
bartf0d65952008-08-02 10:03:37 +0000197 drd:ConflictingAccess
198 fun:_ZN14QReadWriteLock12lockForWriteEv
199 fun:_ZN12QWriteLocker6relockEv
200 fun:_ZN12QWriteLockerC1EP14QReadWriteLock
201 fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
202 fun:_ZN7QObjectD2Ev
203 fun:_ZN24QAbstractEventDispatcherD2Ev
204 fun:_ZN20QEventDispatcherGlibD0Ev
205}
bart9e4554c2009-08-02 07:46:43 +0000206
207#
208# Suppression patterns for libboost.
209#
210
211# Suppress the races on boost::once_flag::epoch and on
212# boost::detail::once_global_epoch. See also the source file
213# boost/thread/pthread/once.hpp in the Boost source tree.
barta45b5722008-12-21 16:08:07 +0000214{
bart9e4554c2009-08-02 07:46:43 +0000215 drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)())
barta45b5722008-12-21 16:08:07 +0000216 drd:ConflictingAccess
217 ...
218 fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_
barta45b5722008-12-21 16:08:07 +0000219}
bart9e4554c2009-08-02 07:46:43 +0000220