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