]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/valgrind/src/valgrind-3.6.0-svn/glibc-2.X-drd.supp
update
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / glibc-2.X-drd.supp
1 #
2 # Suppression patterns for ld, the dynamic loader.
3 #
4
5 # Suppress all data races triggered by ld.
6 {
7    drd-ld
8    drd:ConflictingAccess
9    obj:/lib*/ld-*.so
10 }
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.
22 {
23    drd-libc-stdio
24    drd:ConflictingAccess
25    obj:/lib*/libc-*
26 }
27
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    drd-libstdc++-cxa_guard_release
46    drd:CondErr
47    fun:pthread_cond_broadcast@*
48    fun:__cxa_guard_release
49 }
50
51
52 #
53 # Suppression patterns for libpthread.
54 #
55
56 {
57    drd-libpthread-pthread_create
58    drd:ConflictingAccess
59    ...
60    fun:pthread_create*
61 }
62 {
63    drd-libpthread-pthread_join
64    drd:ConflictingAccess
65    fun:pthread_join
66    fun:pthread_join
67 }
68 {
69    drd-libpthread-__deallocate_stack
70    drd:ConflictingAccess
71    ...
72    fun:__deallocate_stack
73 }
74 {
75    drd-libpthread-__free_stacks
76    drd:ConflictingAccess
77    fun:__free_stacks
78 }
79 {
80    drd-libpthread-__free_tcb
81    drd:ConflictingAccess
82    ...
83    fun:__free_tcb
84 }
85 {
86    drd-libpthread-__nptl_deallocate_tsd
87    drd:ConflictingAccess
88    fun:__nptl_deallocate_tsd
89 }
90 {
91    drd-libpthread-pthread_detach
92    drd:ConflictingAccess
93    fun:pthread_detach
94    fun:pthread_detach
95 }
96 {
97    drd-libpthread-pthread_once
98    drd:ConflictingAccess
99    fun:pthread_once
100 }
101 {
102    drd-libpthread-pthread_cancel_init
103    drd:ConflictingAccess
104    fun:pthread_cancel_init
105 }
106 {
107    drd-libpthread-_Unwind_ForcedUnwind
108    drd:ConflictingAccess
109    ...
110    fun:_Unwind_ForcedUnwind
111 }
112 {
113    drd-libpthread-_Unwind_GetCFA
114    drd:ConflictingAccess
115    fun:_Unwind_GetCFA
116 }
117 {
118    drd-libpthread-_Unwind_Resume
119    drd:ConflictingAccess
120    ...
121    fun:_Unwind_Resume
122 }
123 {
124    drd-libpthread-?
125    drd:ConflictingAccess
126    obj:/lib/libgcc_s.so.1
127 }
128 {
129    drd-libpthread-nanosleep
130    drd:ConflictingAccess
131    fun:nanosleep
132 }
133
134 #
135 # Suppression patterns for libgomp.
136 #
137
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
141 {
142    drd-libgomp
143    drd:ConflictingAccess
144    obj:/usr/lib*/libgomp.so*
145 }
146
147 #
148 # Suppression patterns for libX11.
149 #
150
151 {
152    drd-libX11-XCreateFontSet
153    drd:CondErr
154    fun:pthread_cond_init*
155    fun:_XReply
156    fun:XListFontsWithInfo
157    obj:/usr/lib*/libX11.so*
158    fun:XCreateOC
159    fun:XCreateFontSet
160 }
161
162 #
163 # Suppression patterns for libxcb.
164 #
165
166 {
167    drd-libxcb-xcb_wait_for_reply
168    drd:CondErr
169    fun:pthread_cond_destroy*
170    fun:xcb_wait_for_reply
171 }
172
173 #
174 # Suppression patterns for libglib.
175 #
176
177 {
178    drd-libglib-access-g_threads_got_initialized
179    drd:ConflictingAccess
180    ...
181    fun:g_slice_alloc
182    fun:g_ptr_array_sized_new
183 }
184 {
185    drd-libglib-access-g_threads_got_initialized
186    drd:ConflictingAccess
187    ...
188    fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext
189    fun:_ZN20QEventDispatcherGlibC1EP7QObject
190    obj:/usr/lib*/libQtCore.so.4.*
191    obj:/usr/lib*/libQtCore.so.4.*
192 }
193 {
194    drd-libglib-access-g_mem_initialized
195    drd:ConflictingAccess
196    fun:g_malloc0
197 }
198 {
199    drd-libglib-g_private_get_posix_impl
200    drd:ConflictingAccess
201    fun:g_private_get_posix_impl
202 }
203 {
204    drd-libglib-g_private_set_posix_impl
205    drd:ConflictingAccess
206    fun:g_private_set_posix_impl
207 }
208 {
209    drd-libglib-g_get_language_names
210    drd:ConflictingAccess
211    fun:g_slice_free_chain_with_offset
212 }
213 {
214    drd-libglib-g_main_context_new
215    drd:ConflictingAccess
216    fun:fcntl
217    obj:/usr/lib*/libglib-*.so*
218    fun:g_main_context_new
219 }
220
221 #
222 # Suppression patterns for libQtCore.
223 #
224
225 {
226    drd-libQtCore-deref-that-calls-QThreadData-destructor
227    drd:ConflictingAccess
228    fun:_ZN11QThreadDataD1Ev
229    obj:/usr/lib*/libQtCore.so.4.*
230 }
231 {
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
237 }
238 {
239    drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
240    drd:ConflictingAccess
241    fun:_ZN14QReadWriteLock12lockForWriteEv
242    fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
243    fun:_ZN7QObjectD2Ev
244 }
245 {
246    drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
247    drd:ConflictingAccess
248    fun:_ZN14QReadWriteLock12lockForWriteEv
249    fun:_ZN12QWriteLocker6relockEv
250    fun:_ZN12QWriteLockerC1EP14QReadWriteLock
251    fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
252    fun:_ZN7QObjectD2Ev
253    fun:_ZN24QAbstractEventDispatcherD2Ev
254    fun:_ZN20QEventDispatcherGlibD0Ev
255 }
256 {
257    drd-libQtCore-QMutexPool::get(void const*)
258    drd:ConflictingAccess
259    fun:_ZN10QMutexPool3getEPKv
260 }
261 {
262    drd-libQtCore-qt_gettime_is_monotonic()
263    drd:ConflictingAccess
264    fun:_Z23qt_gettime_is_monotonicv
265 }
266
267 #
268 # Suppression patterns for libboost.
269 #
270
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).
275 {
276    drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)())
277    drd:ConflictingAccess
278    ...
279    fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_
280 }
281 {
282    drd-libboost-boost::detail::get_once_per_thread_epoch()
283    drd:ConflictingAccess
284    fun:_ZN5boost6detail25get_once_per_thread_epochEv
285 }
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.
289 {
290    drd-libboost-boost::detail::get_current_thread_data()
291    drd:ConflictingAccess
292    ...
293    fun:_ZN5boost6detail23get_current_thread_dataEv
294 }
295 {
296    drd-libboost-boost::detail::set_current_thread_data(boost::detail::thread_data_base*)
297    drd:ConflictingAccess
298    ...
299    fun:_ZN5boost6detail23set_current_thread_dataEPNS0_16thread_data_baseE
300 }