bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 1 | # |
2 | # Suppression patterns for ld, the dynamic loader. | ||||
3 | # | ||||
4 | |||||
5 | # Suppress all data races triggered by ld. | ||||
sewardj | af44c82 | 2007-11-25 14:01:38 +0000 | [diff] [blame] | 6 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 7 | drd-ld |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 8 | drd:ConflictingAccess |
tom | 7299d84 | 2012-02-23 12:54:50 +0000 | [diff] [blame] | 9 | obj:*/lib*/ld-*.so |
sewardj | af44c82 | 2007-11-25 14:01:38 +0000 | [diff] [blame] | 10 | } |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 11 | |
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. | ||||
sewardj | af44c82 | 2007-11-25 14:01:38 +0000 | [diff] [blame] | 22 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 23 | drd-libc-stdio |
bart | 15c67b4 | 2009-01-29 09:57:22 +0000 | [diff] [blame] | 24 | drd:ConflictingAccess |
tom | 7299d84 | 2012-02-23 12:54:50 +0000 | [diff] [blame] | 25 | obj:*/lib*/libc-* |
bart | 15c67b4 | 2009-01-29 09:57:22 +0000 | [diff] [blame] | 26 | } |
bart | 9283db1 | 2011-07-26 19:29:23 +0000 | [diff] [blame] | 27 | { |
28 | drd-libc-thread-cancellation-test | ||||
29 | drd:ConflictingAccess | ||||
30 | fun:write | ||||
31 | } | ||||
bart | da59459 | 2012-06-08 06:59:18 +0000 | [diff] [blame] | 32 | { |
33 | drd-libc-random | ||||
34 | drd:ConflictingAccess | ||||
35 | fun:random_r | ||||
36 | fun:random | ||||
37 | } | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 38 | |
39 | # | ||||
40 | # Suppression patterns for libstdc++, the implementation of the standard C++ | ||||
41 | # library included with the gcc compiler. | ||||
42 | # | ||||
43 | # Note: several versions of the libstdc++ library (4.2.2, 4.3.2, 4.4.0, 4.5.0 | ||||
44 | # and their predecessors) contain an implementation of the std::string class | ||||
45 | # that triggers conflicting memory accesses. See also | ||||
46 | # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40518 | ||||
47 | # | ||||
48 | |||||
49 | # { | ||||
50 | # drd-libstdc++-std::string::string() | ||||
51 | # drd:ConflictingAccess | ||||
52 | # fun:_ZNSsC1ERKSs | ||||
53 | # } | ||||
54 | |||||
bart | 5478f84 | 2010-05-12 10:01:32 +0000 | [diff] [blame] | 55 | { |
56 | drd-libstdc++-cxa_guard_release | ||||
57 | drd:CondErr | ||||
58 | fun:pthread_cond_broadcast@* | ||||
59 | fun:__cxa_guard_release | ||||
60 | } | ||||
61 | |||||
62 | |||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 63 | # |
64 | # Suppression patterns for libpthread. | ||||
65 | # | ||||
66 | |||||
bart | 15c67b4 | 2009-01-29 09:57:22 +0000 | [diff] [blame] | 67 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 68 | drd-libpthread-pthread_create |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 69 | drd:ConflictingAccess |
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 70 | ... |
71 | fun:pthread_create* | ||||
bart | ebca786 | 2008-03-09 19:21:14 +0000 | [diff] [blame] | 72 | } |
73 | { | ||||
bart | 0e08b10 | 2009-08-02 08:35:05 +0000 | [diff] [blame] | 74 | drd-libpthread-pthread_join |
75 | drd:ConflictingAccess | ||||
76 | fun:pthread_join | ||||
77 | fun:pthread_join | ||||
78 | } | ||||
79 | { | ||||
80 | drd-libpthread-__deallocate_stack | ||||
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 81 | drd:ConflictingAccess |
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 82 | ... |
bart | cea0e95 | 2008-03-01 10:50:45 +0000 | [diff] [blame] | 83 | fun:__deallocate_stack |
bart | cea0e95 | 2008-03-01 10:50:45 +0000 | [diff] [blame] | 84 | } |
85 | { | ||||
bart | a13f022 | 2010-07-29 07:52:37 +0000 | [diff] [blame] | 86 | drd-libpthread-__free_stacks |
87 | drd:ConflictingAccess | ||||
88 | fun:__free_stacks | ||||
89 | } | ||||
90 | { | ||||
bart | 0e08b10 | 2009-08-02 08:35:05 +0000 | [diff] [blame] | 91 | drd-libpthread-__free_tcb |
92 | drd:ConflictingAccess | ||||
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 93 | ... |
bart | 0e08b10 | 2009-08-02 08:35:05 +0000 | [diff] [blame] | 94 | fun:__free_tcb |
95 | } | ||||
96 | { | ||||
bart | 3a2bcf1 | 2010-06-08 15:00:18 +0000 | [diff] [blame] | 97 | drd-libpthread-__nptl_deallocate_tsd |
98 | drd:ConflictingAccess | ||||
99 | fun:__nptl_deallocate_tsd | ||||
100 | } | ||||
101 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 102 | drd-libpthread-pthread_detach |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 103 | drd:ConflictingAccess |
sewardj | af44c82 | 2007-11-25 14:01:38 +0000 | [diff] [blame] | 104 | fun:pthread_detach |
105 | fun:pthread_detach | ||||
106 | } | ||||
107 | { | ||||
bart | 36c279e | 2010-09-02 14:51:02 +0000 | [diff] [blame] | 108 | drd-libpthread-pthread_once |
109 | drd:ConflictingAccess | ||||
110 | fun:pthread_once | ||||
111 | } | ||||
112 | { | ||||
bart | 343106c | 2010-08-29 16:19:45 +0000 | [diff] [blame] | 113 | drd-libpthread-pthread_cancel_init |
114 | drd:ConflictingAccess | ||||
115 | fun:pthread_cancel_init | ||||
116 | } | ||||
117 | { | ||||
Elliott Hughes | ed39800 | 2017-06-21 14:41:24 -0700 | [diff] [blame] | 118 | drd-libpthread-pthread_cancel |
119 | drd:ConflictingAccess | ||||
120 | fun:pthread_cancel | ||||
121 | fun:pthread_cancel_intercept | ||||
122 | } | ||||
123 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 124 | drd-libpthread-_Unwind_ForcedUnwind |
bart | 81db8d4 | 2008-09-27 12:43:52 +0000 | [diff] [blame] | 125 | drd:ConflictingAccess |
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 126 | ... |
bart | b98b2d5 | 2009-07-10 06:48:13 +0000 | [diff] [blame] | 127 | fun:_Unwind_ForcedUnwind |
bart | 81db8d4 | 2008-09-27 12:43:52 +0000 | [diff] [blame] | 128 | } |
129 | { | ||||
bart | cedece1 | 2010-08-17 15:19:55 +0000 | [diff] [blame] | 130 | drd-libpthread-_Unwind_GetCFA |
131 | drd:ConflictingAccess | ||||
132 | fun:_Unwind_GetCFA | ||||
133 | } | ||||
134 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 135 | drd-libpthread-_Unwind_Resume |
bart | f0c61c2 | 2008-09-27 13:14:06 +0000 | [diff] [blame] | 136 | drd:ConflictingAccess |
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 137 | ... |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 138 | fun:_Unwind_Resume |
bart | a238ee5 | 2008-09-27 13:23:41 +0000 | [diff] [blame] | 139 | } |
bart | 2f2d679 | 2009-08-14 13:22:48 +0000 | [diff] [blame] | 140 | { |
bart | cedece1 | 2010-08-17 15:19:55 +0000 | [diff] [blame] | 141 | drd-libpthread-? |
142 | drd:ConflictingAccess | ||||
tom | 7299d84 | 2012-02-23 12:54:50 +0000 | [diff] [blame] | 143 | obj:*/lib/libgcc_s.so.1 |
bart | cedece1 | 2010-08-17 15:19:55 +0000 | [diff] [blame] | 144 | } |
145 | { | ||||
bart | 2f2d679 | 2009-08-14 13:22:48 +0000 | [diff] [blame] | 146 | drd-libpthread-nanosleep |
147 | drd:ConflictingAccess | ||||
148 | fun:nanosleep | ||||
149 | } | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 150 | |
151 | # | ||||
152 | # Suppression patterns for libgomp. | ||||
153 | # | ||||
154 | |||||
155 | # Unfortunately many statements in libgomp trigger conflicting accesses. It is | ||||
156 | # not clear to me which of these are safe and which ones not. See also | ||||
157 | # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362 | ||||
bart | a238ee5 | 2008-09-27 13:23:41 +0000 | [diff] [blame] | 158 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 159 | drd-libgomp |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 160 | drd:ConflictingAccess |
bart | 459caeb | 2008-03-11 19:46:45 +0000 | [diff] [blame] | 161 | obj:/usr/lib*/libgomp.so* |
bart | 459caeb | 2008-03-11 19:46:45 +0000 | [diff] [blame] | 162 | } |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 163 | |
164 | # | ||||
165 | # Suppression patterns for libX11. | ||||
166 | # | ||||
167 | |||||
bart | dd7a30d | 2008-03-22 17:36:23 +0000 | [diff] [blame] | 168 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 169 | drd-libX11-XCreateFontSet |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 170 | drd:CondErr |
bart | 9483fd3 | 2008-07-01 14:13:25 +0000 | [diff] [blame] | 171 | fun:pthread_cond_init* |
172 | fun:_XReply | ||||
173 | fun:XListFontsWithInfo | ||||
174 | obj:/usr/lib*/libX11.so* | ||||
175 | fun:XCreateOC | ||||
176 | fun:XCreateFontSet | ||||
177 | } | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 178 | |
179 | # | ||||
180 | # Suppression patterns for libxcb. | ||||
181 | # | ||||
182 | |||||
bart | 9483fd3 | 2008-07-01 14:13:25 +0000 | [diff] [blame] | 183 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 184 | drd-libxcb-xcb_wait_for_reply |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 185 | drd:CondErr |
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 186 | ... |
bart | dd7a30d | 2008-03-22 17:36:23 +0000 | [diff] [blame] | 187 | fun:pthread_cond_destroy* |
188 | fun:xcb_wait_for_reply | ||||
189 | } | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 190 | |
191 | # | ||||
192 | # Suppression patterns for libglib. | ||||
193 | # | ||||
194 | |||||
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 195 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 196 | drd-libglib-access-g_threads_got_initialized |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 197 | drd:ConflictingAccess |
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 198 | ... |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 199 | fun:g_slice_alloc |
200 | fun:g_ptr_array_sized_new | ||||
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 201 | } |
202 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 203 | drd-libglib-access-g_threads_got_initialized |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 204 | drd:ConflictingAccess |
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 205 | ... |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 206 | fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext |
207 | fun:_ZN20QEventDispatcherGlibC1EP7QObject | ||||
208 | obj:/usr/lib*/libQtCore.so.4.* | ||||
209 | obj:/usr/lib*/libQtCore.so.4.* | ||||
210 | } | ||||
211 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 212 | drd-libglib-access-g_mem_initialized |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 213 | drd:ConflictingAccess |
214 | fun:g_malloc0 | ||||
215 | } | ||||
216 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 217 | drd-libglib-g_private_get_posix_impl |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 218 | drd:ConflictingAccess |
219 | fun:g_private_get_posix_impl | ||||
220 | } | ||||
221 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 222 | drd-libglib-g_private_set_posix_impl |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 223 | drd:ConflictingAccess |
224 | fun:g_private_set_posix_impl | ||||
225 | } | ||||
226 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 227 | drd-libglib-g_get_language_names |
bart | a99ab01 | 2008-12-27 09:19:01 +0000 | [diff] [blame] | 228 | drd:ConflictingAccess |
229 | fun:g_slice_free_chain_with_offset | ||||
bart | a99ab01 | 2008-12-27 09:19:01 +0000 | [diff] [blame] | 230 | } |
bart | 75516e5 | 2009-08-10 14:13:12 +0000 | [diff] [blame] | 231 | { |
232 | drd-libglib-g_main_context_new | ||||
233 | drd:ConflictingAccess | ||||
234 | fun:fcntl | ||||
235 | obj:/usr/lib*/libglib-*.so* | ||||
236 | fun:g_main_context_new | ||||
237 | } | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 238 | |
239 | # | ||||
240 | # Suppression patterns for libQtCore. | ||||
241 | # | ||||
242 | |||||
bart | a99ab01 | 2008-12-27 09:19:01 +0000 | [diff] [blame] | 243 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 244 | drd-libQtCore-deref-that-calls-QThreadData-destructor |
bart | ddead32 | 2009-02-14 15:47:53 +0000 | [diff] [blame] | 245 | drd:ConflictingAccess |
246 | fun:_ZN11QThreadDataD1Ev | ||||
bart | ddead32 | 2009-02-14 15:47:53 +0000 | [diff] [blame] | 247 | obj:/usr/lib*/libQtCore.so.4.* |
248 | } | ||||
249 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 250 | drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList |
bart | eb33915 | 2008-07-29 13:01:16 +0000 | [diff] [blame] | 251 | drd:ConflictingAccess |
252 | obj:/usr/lib*/libQtCore.so.4.* | ||||
253 | fun:_ZN11QMetaObject8activateEP7QObjectiiPPv | ||||
254 | fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv | ||||
255 | } | ||||
256 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 257 | drd-libQtCore-QObjectPrivate::clearGuards(QObject*) |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 258 | drd:ConflictingAccess |
259 | fun:_ZN14QReadWriteLock12lockForWriteEv | ||||
260 | fun:_ZN14QObjectPrivate11clearGuardsEP7QObject | ||||
261 | fun:_ZN7QObjectD2Ev | ||||
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 262 | } |
bart | f0d6595 | 2008-08-02 10:03:37 +0000 | [diff] [blame] | 263 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 264 | drd-libQtCore-QObjectPrivate::clearGuards(QObject*) |
bart | f0d6595 | 2008-08-02 10:03:37 +0000 | [diff] [blame] | 265 | drd:ConflictingAccess |
266 | fun:_ZN14QReadWriteLock12lockForWriteEv | ||||
267 | fun:_ZN12QWriteLocker6relockEv | ||||
268 | fun:_ZN12QWriteLockerC1EP14QReadWriteLock | ||||
269 | fun:_ZN14QObjectPrivate11clearGuardsEP7QObject | ||||
270 | fun:_ZN7QObjectD2Ev | ||||
271 | fun:_ZN24QAbstractEventDispatcherD2Ev | ||||
272 | fun:_ZN20QEventDispatcherGlibD0Ev | ||||
273 | } | ||||
bart | 75516e5 | 2009-08-10 14:13:12 +0000 | [diff] [blame] | 274 | { |
275 | drd-libQtCore-QMutexPool::get(void const*) | ||||
276 | drd:ConflictingAccess | ||||
277 | fun:_ZN10QMutexPool3getEPKv | ||||
278 | } | ||||
bart | a13f022 | 2010-07-29 07:52:37 +0000 | [diff] [blame] | 279 | { |
280 | drd-libQtCore-qt_gettime_is_monotonic() | ||||
281 | drd:ConflictingAccess | ||||
282 | fun:_Z23qt_gettime_is_monotonicv | ||||
283 | } | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 284 | |
285 | # | ||||
286 | # Suppression patterns for libboost. | ||||
287 | # | ||||
288 | |||||
289 | # Suppress the races on boost::once_flag::epoch and on | ||||
bart | 271889e | 2010-06-05 11:57:57 +0000 | [diff] [blame] | 290 | # boost::detail::this_thread_epoch. See also the source file |
291 | # boost/thread/pthread/once.hpp in the Boost source tree | ||||
292 | # (https://svn.boost.org/trac/boost/browser/trunk/boost/thread/pthread/once.hpp). | ||||
bart | a45b572 | 2008-12-21 16:08:07 +0000 | [diff] [blame] | 293 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 294 | drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)()) |
bart | a45b572 | 2008-12-21 16:08:07 +0000 | [diff] [blame] | 295 | drd:ConflictingAccess |
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 296 | ... |
bart | a45b572 | 2008-12-21 16:08:07 +0000 | [diff] [blame] | 297 | fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_ |
bart | a45b572 | 2008-12-21 16:08:07 +0000 | [diff] [blame] | 298 | } |
bart | 35da3c4 | 2009-08-12 09:45:54 +0000 | [diff] [blame] | 299 | { |
300 | drd-libboost-boost::detail::get_once_per_thread_epoch() | ||||
301 | drd:ConflictingAccess | ||||
302 | fun:_ZN5boost6detail25get_once_per_thread_epochEv | ||||
303 | } | ||||
bart | 271889e | 2010-06-05 11:57:57 +0000 | [diff] [blame] | 304 | # Suppress the race reports on boost::detail::current_thread_tls_key. See also |
305 | # https://svn.boost.org/trac/boost/ticket/3526 for more information about why | ||||
306 | # the access pattern of current_thread_tls_key is safe. | ||||
bart | 35da3c4 | 2009-08-12 09:45:54 +0000 | [diff] [blame] | 307 | { |
308 | drd-libboost-boost::detail::get_current_thread_data() | ||||
309 | drd:ConflictingAccess | ||||
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 310 | ... |
bart | 35da3c4 | 2009-08-12 09:45:54 +0000 | [diff] [blame] | 311 | fun:_ZN5boost6detail23get_current_thread_dataEv |
312 | } | ||||
bart | 271889e | 2010-06-05 11:57:57 +0000 | [diff] [blame] | 313 | { |
314 | drd-libboost-boost::detail::set_current_thread_data(boost::detail::thread_data_base*) | ||||
315 | drd:ConflictingAccess | ||||
bart | dc9669f | 2014-06-14 16:39:46 +0000 | [diff] [blame] | 316 | ... |
bart | 271889e | 2010-06-05 11:57:57 +0000 | [diff] [blame] | 317 | fun:_ZN5boost6detail23set_current_thread_dataEPNS0_16thread_data_baseE |
318 | } |