2 # Suppression patterns for ld, the dynamic loader.
5 # Suppress all data races triggered by ld.
13 # Suppression patterns for libc.
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.
29 # Suppression patterns for libstdc++, the implementation of the standard C++
30 # library included with the gcc compiler.
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
39 # drd-libstdc++-std::string::string()
40 # drd:ConflictingAccess
45 drd-libstdc++-cxa_guard_release
47 fun:pthread_cond_broadcast@*
48 fun:__cxa_guard_release
53 # Suppression patterns for libpthread.
57 drd-libpthread-pthread_create
63 drd-libpthread-pthread_join
69 drd-libpthread-__deallocate_stack
72 fun:__deallocate_stack
75 drd-libpthread-__free_stacks
80 drd-libpthread-__free_tcb
86 drd-libpthread-__nptl_deallocate_tsd
88 fun:__nptl_deallocate_tsd
91 drd-libpthread-pthread_detach
97 drd-libpthread-pthread_once
102 drd-libpthread-pthread_cancel_init
103 drd:ConflictingAccess
104 fun:pthread_cancel_init
107 drd-libpthread-_Unwind_ForcedUnwind
108 drd:ConflictingAccess
110 fun:_Unwind_ForcedUnwind
113 drd-libpthread-_Unwind_GetCFA
114 drd:ConflictingAccess
118 drd-libpthread-_Unwind_Resume
119 drd:ConflictingAccess
125 drd:ConflictingAccess
126 obj:/lib/libgcc_s.so.1
129 drd-libpthread-nanosleep
130 drd:ConflictingAccess
135 # Suppression patterns for libgomp.
138 # Unfortunately many statements in libgomp trigger conflicting accesses. It is
139 # not clear to me which of these are safe and which ones not. See also
140 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362
143 drd:ConflictingAccess
144 obj:/usr/lib*/libgomp.so*
148 # Suppression patterns for libX11.
152 drd-libX11-XCreateFontSet
154 fun:pthread_cond_init*
156 fun:XListFontsWithInfo
157 obj:/usr/lib*/libX11.so*
163 # Suppression patterns for libxcb.
167 drd-libxcb-xcb_wait_for_reply
169 fun:pthread_cond_destroy*
170 fun:xcb_wait_for_reply
174 # Suppression patterns for libglib.
178 drd-libglib-access-g_threads_got_initialized
179 drd:ConflictingAccess
182 fun:g_ptr_array_sized_new
185 drd-libglib-access-g_threads_got_initialized
186 drd:ConflictingAccess
188 fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext
189 fun:_ZN20QEventDispatcherGlibC1EP7QObject
190 obj:/usr/lib*/libQtCore.so.4.*
191 obj:/usr/lib*/libQtCore.so.4.*
194 drd-libglib-access-g_mem_initialized
195 drd:ConflictingAccess
199 drd-libglib-g_private_get_posix_impl
200 drd:ConflictingAccess
201 fun:g_private_get_posix_impl
204 drd-libglib-g_private_set_posix_impl
205 drd:ConflictingAccess
206 fun:g_private_set_posix_impl
209 drd-libglib-g_get_language_names
210 drd:ConflictingAccess
211 fun:g_slice_free_chain_with_offset
214 drd-libglib-g_main_context_new
215 drd:ConflictingAccess
217 obj:/usr/lib*/libglib-*.so*
218 fun:g_main_context_new
222 # Suppression patterns for libQtCore.
226 drd-libQtCore-deref-that-calls-QThreadData-destructor
227 drd:ConflictingAccess
228 fun:_ZN11QThreadDataD1Ev
229 obj:/usr/lib*/libQtCore.so.4.*
232 drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList
233 drd:ConflictingAccess
234 obj:/usr/lib*/libQtCore.so.4.*
235 fun:_ZN11QMetaObject8activateEP7QObjectiiPPv
236 fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv
239 drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
240 drd:ConflictingAccess
241 fun:_ZN14QReadWriteLock12lockForWriteEv
242 fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
246 drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
247 drd:ConflictingAccess
248 fun:_ZN14QReadWriteLock12lockForWriteEv
249 fun:_ZN12QWriteLocker6relockEv
250 fun:_ZN12QWriteLockerC1EP14QReadWriteLock
251 fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
253 fun:_ZN24QAbstractEventDispatcherD2Ev
254 fun:_ZN20QEventDispatcherGlibD0Ev
257 drd-libQtCore-QMutexPool::get(void const*)
258 drd:ConflictingAccess
259 fun:_ZN10QMutexPool3getEPKv
262 drd-libQtCore-qt_gettime_is_monotonic()
263 drd:ConflictingAccess
264 fun:_Z23qt_gettime_is_monotonicv
268 # Suppression patterns for libboost.
271 # Suppress the races on boost::once_flag::epoch and on
272 # boost::detail::this_thread_epoch. See also the source file
273 # boost/thread/pthread/once.hpp in the Boost source tree
274 # (https://svn.boost.org/trac/boost/browser/trunk/boost/thread/pthread/once.hpp).
276 drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)())
277 drd:ConflictingAccess
279 fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_
282 drd-libboost-boost::detail::get_once_per_thread_epoch()
283 drd:ConflictingAccess
284 fun:_ZN5boost6detail25get_once_per_thread_epochEv
286 # Suppress the race reports on boost::detail::current_thread_tls_key. See also
287 # https://svn.boost.org/trac/boost/ticket/3526 for more information about why
288 # the access pattern of current_thread_tls_key is safe.
290 drd-libboost-boost::detail::get_current_thread_data()
291 drd:ConflictingAccess
293 fun:_ZN5boost6detail23get_current_thread_dataEv
296 drd-libboost-boost::detail::set_current_thread_data(boost::detail::thread_data_base*)
297 drd:ConflictingAccess
299 fun:_ZN5boost6detail23set_current_thread_dataEPNS0_16thread_data_baseE