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 |
sewardj | 8b09d4f | 2007-12-04 21:27:18 +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 |
25 | obj:/lib*/libc-* | ||||
26 | } | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 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 | # Suppression patterns for libpthread. | ||||
46 | # | ||||
47 | |||||
bart | 15c67b4 | 2009-01-29 09:57:22 +0000 | [diff] [blame] | 48 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 49 | drd-libpthread-pthread_create |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 50 | drd:ConflictingAccess |
bart | 00408ca | 2008-11-17 18:22:10 +0000 | [diff] [blame] | 51 | ... |
bart | ebca786 | 2008-03-09 19:21:14 +0000 | [diff] [blame] | 52 | fun:pthread_create* |
53 | } | ||||
54 | { | ||||
bart | 0e08b10 | 2009-08-02 08:35:05 +0000 | [diff] [blame^] | 55 | drd-libpthread-pthread_join |
56 | drd:ConflictingAccess | ||||
57 | fun:pthread_join | ||||
58 | fun:pthread_join | ||||
59 | } | ||||
60 | { | ||||
61 | drd-libpthread-__deallocate_stack | ||||
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 62 | drd:ConflictingAccess |
bart | a39b9a0 | 2008-11-17 17:57:15 +0000 | [diff] [blame] | 63 | ... |
bart | cea0e95 | 2008-03-01 10:50:45 +0000 | [diff] [blame] | 64 | fun:__deallocate_stack |
bart | cea0e95 | 2008-03-01 10:50:45 +0000 | [diff] [blame] | 65 | } |
66 | { | ||||
bart | 0e08b10 | 2009-08-02 08:35:05 +0000 | [diff] [blame^] | 67 | drd-libpthread-__free_tcb |
68 | drd:ConflictingAccess | ||||
69 | ... | ||||
70 | fun:__free_tcb | ||||
71 | } | ||||
72 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 73 | drd-libpthread-pthread_detach |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 74 | drd:ConflictingAccess |
sewardj | af44c82 | 2007-11-25 14:01:38 +0000 | [diff] [blame] | 75 | fun:pthread_detach |
76 | fun:pthread_detach | ||||
77 | } | ||||
78 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 79 | drd-libpthread-_Unwind_ForcedUnwind |
bart | 81db8d4 | 2008-09-27 12:43:52 +0000 | [diff] [blame] | 80 | drd:ConflictingAccess |
bart | b98b2d5 | 2009-07-10 06:48:13 +0000 | [diff] [blame] | 81 | ... |
82 | fun:_Unwind_ForcedUnwind | ||||
bart | 81db8d4 | 2008-09-27 12:43:52 +0000 | [diff] [blame] | 83 | } |
84 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 85 | drd-libpthread-_Unwind_Resume |
bart | f0c61c2 | 2008-09-27 13:14:06 +0000 | [diff] [blame] | 86 | drd:ConflictingAccess |
bart | b98b2d5 | 2009-07-10 06:48:13 +0000 | [diff] [blame] | 87 | ... |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 88 | fun:_Unwind_Resume |
bart | a238ee5 | 2008-09-27 13:23:41 +0000 | [diff] [blame] | 89 | } |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 90 | |
91 | # | ||||
92 | # Suppression patterns for libgomp. | ||||
93 | # | ||||
94 | |||||
95 | # Unfortunately many statements in libgomp trigger conflicting accesses. It is | ||||
96 | # not clear to me which of these are safe and which ones not. See also | ||||
97 | # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362 | ||||
bart | a238ee5 | 2008-09-27 13:23:41 +0000 | [diff] [blame] | 98 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 99 | drd-libgomp |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 100 | drd:ConflictingAccess |
bart | 459caeb | 2008-03-11 19:46:45 +0000 | [diff] [blame] | 101 | obj:/usr/lib*/libgomp.so* |
bart | 459caeb | 2008-03-11 19:46:45 +0000 | [diff] [blame] | 102 | } |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 103 | |
104 | # | ||||
105 | # Suppression patterns for libX11. | ||||
106 | # | ||||
107 | |||||
bart | dd7a30d | 2008-03-22 17:36:23 +0000 | [diff] [blame] | 108 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 109 | drd-libX11-XCreateFontSet |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 110 | drd:CondErr |
bart | 9483fd3 | 2008-07-01 14:13:25 +0000 | [diff] [blame] | 111 | fun:pthread_cond_init* |
112 | fun:_XReply | ||||
113 | fun:XListFontsWithInfo | ||||
114 | obj:/usr/lib*/libX11.so* | ||||
115 | fun:XCreateOC | ||||
116 | fun:XCreateFontSet | ||||
117 | } | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 118 | |
119 | # | ||||
120 | # Suppression patterns for libxcb. | ||||
121 | # | ||||
122 | |||||
bart | 9483fd3 | 2008-07-01 14:13:25 +0000 | [diff] [blame] | 123 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 124 | drd-libxcb-xcb_wait_for_reply |
bart | ef1b972 | 2008-07-04 15:34:23 +0000 | [diff] [blame] | 125 | drd:CondErr |
bart | dd7a30d | 2008-03-22 17:36:23 +0000 | [diff] [blame] | 126 | fun:pthread_cond_destroy* |
127 | fun:xcb_wait_for_reply | ||||
128 | } | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 129 | |
130 | # | ||||
131 | # Suppression patterns for libglib. | ||||
132 | # | ||||
133 | |||||
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 134 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 135 | drd-libglib-access-g_threads_got_initialized |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 136 | drd:ConflictingAccess |
bart | a99ab01 | 2008-12-27 09:19:01 +0000 | [diff] [blame] | 137 | ... |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 138 | fun:g_slice_alloc |
139 | fun:g_ptr_array_sized_new | ||||
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 140 | } |
141 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 142 | drd-libglib-access-g_threads_got_initialized |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 143 | drd:ConflictingAccess |
144 | fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext | ||||
145 | fun:_ZN20QEventDispatcherGlibC1EP7QObject | ||||
146 | obj:/usr/lib*/libQtCore.so.4.* | ||||
147 | obj:/usr/lib*/libQtCore.so.4.* | ||||
148 | } | ||||
149 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 150 | drd-libglib-access-g_mem_initialized |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 151 | drd:ConflictingAccess |
152 | fun:g_malloc0 | ||||
153 | } | ||||
154 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 155 | drd-libglib-g_private_get_posix_impl |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 156 | drd:ConflictingAccess |
157 | fun:g_private_get_posix_impl | ||||
158 | } | ||||
159 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 160 | drd-libglib-g_private_set_posix_impl |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 161 | drd:ConflictingAccess |
162 | fun:g_private_set_posix_impl | ||||
163 | } | ||||
164 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 165 | drd-libglib-g_get_language_names |
bart | a99ab01 | 2008-12-27 09:19:01 +0000 | [diff] [blame] | 166 | drd:ConflictingAccess |
167 | fun:g_slice_free_chain_with_offset | ||||
bart | a99ab01 | 2008-12-27 09:19:01 +0000 | [diff] [blame] | 168 | } |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 169 | |
170 | # | ||||
171 | # Suppression patterns for libQtCore. | ||||
172 | # | ||||
173 | |||||
bart | a99ab01 | 2008-12-27 09:19:01 +0000 | [diff] [blame] | 174 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 175 | drd-libQtCore-deref-that-calls-QThreadData-destructor |
bart | ddead32 | 2009-02-14 15:47:53 +0000 | [diff] [blame] | 176 | drd:ConflictingAccess |
177 | fun:_ZN11QThreadDataD1Ev | ||||
178 | fun:_ZN11QThreadData5derefEv | ||||
179 | obj:/usr/lib*/libQtCore.so.4.* | ||||
180 | } | ||||
181 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 182 | drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList |
bart | eb33915 | 2008-07-29 13:01:16 +0000 | [diff] [blame] | 183 | drd:ConflictingAccess |
184 | obj:/usr/lib*/libQtCore.so.4.* | ||||
185 | fun:_ZN11QMetaObject8activateEP7QObjectiiPPv | ||||
186 | fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv | ||||
187 | } | ||||
188 | { | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 189 | drd-libQtCore-QObjectPrivate::clearGuards(QObject*) |
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 190 | drd:ConflictingAccess |
191 | fun:_ZN14QReadWriteLock12lockForWriteEv | ||||
192 | fun:_ZN14QObjectPrivate11clearGuardsEP7QObject | ||||
193 | fun:_ZN7QObjectD2Ev | ||||
bart | e53fb26 | 2008-07-08 09:29:19 +0000 | [diff] [blame] | 194 | } |
bart | f0d6595 | 2008-08-02 10:03:37 +0000 | [diff] [blame] | 195 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 196 | drd-libQtCore-QObjectPrivate::clearGuards(QObject*) |
bart | f0d6595 | 2008-08-02 10:03:37 +0000 | [diff] [blame] | 197 | drd:ConflictingAccess |
198 | fun:_ZN14QReadWriteLock12lockForWriteEv | ||||
199 | fun:_ZN12QWriteLocker6relockEv | ||||
200 | fun:_ZN12QWriteLockerC1EP14QReadWriteLock | ||||
201 | fun:_ZN14QObjectPrivate11clearGuardsEP7QObject | ||||
202 | fun:_ZN7QObjectD2Ev | ||||
203 | fun:_ZN24QAbstractEventDispatcherD2Ev | ||||
204 | fun:_ZN20QEventDispatcherGlibD0Ev | ||||
205 | } | ||||
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 206 | |
207 | # | ||||
208 | # Suppression patterns for libboost. | ||||
209 | # | ||||
210 | |||||
211 | # Suppress the races on boost::once_flag::epoch and on | ||||
212 | # boost::detail::once_global_epoch. See also the source file | ||||
213 | # boost/thread/pthread/once.hpp in the Boost source tree. | ||||
bart | a45b572 | 2008-12-21 16:08:07 +0000 | [diff] [blame] | 214 | { |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 215 | drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)()) |
bart | a45b572 | 2008-12-21 16:08:07 +0000 | [diff] [blame] | 216 | drd:ConflictingAccess |
217 | ... | ||||
218 | fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_ | ||||
bart | a45b572 | 2008-12-21 16:08:07 +0000 | [diff] [blame] | 219 | } |
bart | 9e4554c | 2009-08-02 07:46:43 +0000 | [diff] [blame] | 220 |