Add DRD suppression patterns for races triggered by std::ostream
[valgrind.git] / glibc-2.X-drd.supp
blobcee5f22fb14d708f5d77cb1a13352de916f0b153
2 # Suppression patterns for ld, the dynamic loader.
5 # Suppress all data races triggered by ld.
7    drd-ld
8    drd:ConflictingAccess
9    obj:*/lib*/ld-*.so
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.
23    drd-libc-stdio
24    drd:ConflictingAccess
25    obj:*/lib*/libc-*
28    drd-libc-thread-cancellation-test
29    drd:ConflictingAccess
30    fun:write
33    drd-libc-random
34    drd:ConflictingAccess
35    fun:random_r
36    fun:random
40 # Suppression patterns for libstdc++, the implementation of the standard C++
41 # library included with the gcc compiler.
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
49 # {
50 #    drd-libstdc++-std::string::string()
51 #    drd:ConflictingAccess
52 #    fun:_ZNSsC1ERKSs
53 # }
56    drd-libstdc++-cxa_guard_release
57    drd:CondErr
58    fun:pthread_cond_broadcast@*
59    fun:__cxa_guard_release
62    drd-libstdc++-std::__ostream_insert()
63    drd:ConflictingAccess
64    fun:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
65    fun:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
68    drd-libstdc++-std::ostream::_M_insert<long>()
69    drd:ConflictingAccess
70    ...
71    fun:_ZNSo9_M_insertIlEERSoT_
76 # Suppression patterns for libpthread.
80    drd-libpthread-pthread_create
81    drd:ConflictingAccess
82    ...
83    fun:pthread_create*
86    drd-libpthread-pthread_join
87    drd:ConflictingAccess
88    fun:pthread_join
89    fun:pthread_join
92    drd-libpthread-__deallocate_stack
93    drd:ConflictingAccess
94    ...
95    fun:__deallocate_stack
98    drd-libpthread-__free_stacks
99    drd:ConflictingAccess
100    fun:__free_stacks
103    drd-libpthread-__free_tcb
104    drd:ConflictingAccess
105    ...
106    fun:__free_tcb
109    drd-libpthread-__nptl_deallocate_tsd
110    drd:ConflictingAccess
111    fun:__nptl_deallocate_tsd
114    drd-libpthread-pthread_detach
115    drd:ConflictingAccess
116    fun:pthread_detach
117    fun:pthread_detach
120    drd-libpthread-pthread_once
121    drd:ConflictingAccess
122    fun:pthread_once
125    drd-libpthread-pthread_cancel_init
126    drd:ConflictingAccess
127    fun:pthread_cancel_init
130    drd-libpthread-pthread_cancel
131    drd:ConflictingAccess
132    fun:pthread_cancel
133    fun:pthread_cancel_intercept
136    drd-libpthread-_Unwind_ForcedUnwind
137    drd:ConflictingAccess
138    ...
139    fun:_Unwind_ForcedUnwind
142    drd-libpthread-_Unwind_GetCFA
143    drd:ConflictingAccess
144    fun:_Unwind_GetCFA
147    drd-libpthread-_Unwind_Resume
148    drd:ConflictingAccess
149    ...
150    fun:_Unwind_Resume
153    drd-libpthread-?
154    drd:ConflictingAccess
155    obj:*/lib/libgcc_s.so.1
158    drd-libpthread-nanosleep
159    drd:ConflictingAccess
160    fun:nanosleep
164 # Suppression patterns for libgomp.
167 # Unfortunately many statements in libgomp trigger conflicting accesses. It is
168 # not clear to me which of these are safe and which ones not. See also
169 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362
171    drd-libgomp
172    drd:ConflictingAccess
173    obj:/usr/lib*/libgomp.so*
177 # Suppression patterns for libX11.
181    drd-libX11-XCreateFontSet
182    drd:CondErr
183    fun:pthread_cond_init*
184    fun:_XReply
185    fun:XListFontsWithInfo
186    obj:/usr/lib*/libX11.so*
187    fun:XCreateOC
188    fun:XCreateFontSet
192 # Suppression patterns for libxcb.
196    drd-libxcb-xcb_wait_for_reply
197    drd:CondErr
198    ...
199    fun:pthread_cond_destroy*
200    fun:xcb_wait_for_reply
204 # Suppression patterns for libglib.
208    drd-libglib-access-g_threads_got_initialized
209    drd:ConflictingAccess
210    ...
211    fun:g_slice_alloc
212    fun:g_ptr_array_sized_new
215    drd-libglib-access-g_threads_got_initialized
216    drd:ConflictingAccess
217    ...
218    fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext
219    fun:_ZN20QEventDispatcherGlibC1EP7QObject
220    obj:/usr/lib*/libQtCore.so.4.*
221    obj:/usr/lib*/libQtCore.so.4.*
224    drd-libglib-access-g_mem_initialized
225    drd:ConflictingAccess
226    fun:g_malloc0
229    drd-libglib-g_private_get_posix_impl
230    drd:ConflictingAccess
231    fun:g_private_get_posix_impl
234    drd-libglib-g_private_set_posix_impl
235    drd:ConflictingAccess
236    fun:g_private_set_posix_impl
239    drd-libglib-g_get_language_names
240    drd:ConflictingAccess
241    fun:g_slice_free_chain_with_offset
244    drd-libglib-g_main_context_new
245    drd:ConflictingAccess
246    fun:fcntl
247    obj:/usr/lib*/libglib-*.so*
248    fun:g_main_context_new
252 # Suppression patterns for libQtCore.
256    drd-libQtCore-deref-that-calls-QThreadData-destructor
257    drd:ConflictingAccess
258    fun:_ZN11QThreadDataD1Ev
259    obj:/usr/lib*/libQtCore.so.4.*
262    drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList
263    drd:ConflictingAccess
264    obj:/usr/lib*/libQtCore.so.4.*
265    fun:_ZN11QMetaObject8activateEP7QObjectiiPPv
266    fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv
269    drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
270    drd:ConflictingAccess
271    fun:_ZN14QReadWriteLock12lockForWriteEv
272    fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
273    fun:_ZN7QObjectD2Ev
276    drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
277    drd:ConflictingAccess
278    fun:_ZN14QReadWriteLock12lockForWriteEv
279    fun:_ZN12QWriteLocker6relockEv
280    fun:_ZN12QWriteLockerC1EP14QReadWriteLock
281    fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
282    fun:_ZN7QObjectD2Ev
283    fun:_ZN24QAbstractEventDispatcherD2Ev
284    fun:_ZN20QEventDispatcherGlibD0Ev
287    drd-libQtCore-QMutexPool::get(void const*)
288    drd:ConflictingAccess
289    fun:_ZN10QMutexPool3getEPKv
292    drd-libQtCore-qt_gettime_is_monotonic()
293    drd:ConflictingAccess
294    fun:_Z23qt_gettime_is_monotonicv
298 # Suppression patterns for libboost.
301 # Suppress the races on boost::once_flag::epoch and on
302 # boost::detail::this_thread_epoch. See also the source file
303 # boost/thread/pthread/once.hpp in the Boost source tree
304 # (https://svn.boost.org/trac/boost/browser/trunk/boost/thread/pthread/once.hpp).
306    drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)())
307    drd:ConflictingAccess
308    ...
309    fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_
312    drd-libboost-boost::detail::get_once_per_thread_epoch()
313    drd:ConflictingAccess
314    fun:_ZN5boost6detail25get_once_per_thread_epochEv
316 # Suppress the race reports on boost::detail::current_thread_tls_key. See also
317 # https://svn.boost.org/trac/boost/ticket/3526 for more information about why
318 # the access pattern of current_thread_tls_key is safe.
320    drd-libboost-boost::detail::get_current_thread_data()
321    drd:ConflictingAccess
322    ...
323    fun:_ZN5boost6detail23get_current_thread_dataEv
326    drd-libboost-boost::detail::set_current_thread_data(boost::detail::thread_data_base*)
327    drd:ConflictingAccess
328    ...
329    fun:_ZN5boost6detail23set_current_thread_dataEPNS0_16thread_data_baseE