OLD | NEW |
| (Empty) |
1 # This file lists the functions, object files and source files | |
2 # which should be ignored (i.e. not instrumented) by ThreadSanitizer. | |
3 # See http://code.google.com/p/data-race-test/wiki/ThreadSanitizerIgnores. | |
4 | |
5 # ignore these libraries | |
6 obj:*/libfreetype* | |
7 obj:*/libdbus* | |
8 | |
9 # we ignore the whole NSS library for now since | |
10 # its instrumentation is very slow. | |
11 # TODO(timurrrr): investigate whether we need to instrument it | |
12 obj:*/libnss* | |
13 obj:*/nss/* | |
14 | |
15 # ignore pulseaudio - We don't have symbols there and it can be slow otherwise | |
16 obj:*/libpulse*.so* | |
17 | |
18 # ignore this standard stuff | |
19 fun:clone | |
20 fun:fork | |
21 fun:pthread_* | |
22 fun_r:_pthread_exit | |
23 fun_r:_pthread_free_pthread_onstack | |
24 fun_r:random_r | |
25 fun_r:random | |
26 fun_r:rand | |
27 fun_r:srand | |
28 fun:__new_exitfn | |
29 fun:_dl_* | |
30 fun:__dl_* | |
31 fun:*_setjmp* | |
32 | |
33 # dark magic with 'errno' here. | |
34 fun:sys_* | |
35 | |
36 # ignore libc's printf functions | |
37 fun_r:_IO_* | |
38 fun:fwrite | |
39 fun:fflush | |
40 | |
41 # False reports on std::string internals, see | |
42 # http://code.google.com/p/data-race-test/issues/detail?id=40 | |
43 fun:*_M_mutateE* | |
44 fun_r:*_M_set_length_and_sharable* | |
45 fun:*_M_is_leaked* | |
46 fun:*_M_is_shared* | |
47 fun:*_M_set_leaked* | |
48 fun:*_M_set_sharable* | |
49 | |
50 # Comparison of std::strings sometimes takes a lot of time but we don't really | |
51 # need precise stack traces there. | |
52 fun_hist:_ZStltIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_ | |
53 fun_hist:_ZNKSs7compareERKSs | |
54 | |
55 # Don't instrument intercepts | |
56 src:*ts_valgrind_intercepts.c | |
57 | |
58 ################################################################## | |
59 # Don't instrument synchronization code | |
60 src:*base/threading/thread_local_storage* | |
61 src:*base/stats_counters* | |
62 src:*base/synchronization/condition_variable* | |
63 src:*base/synchronization/lock* | |
64 src:*base/synchronization/waitable_event* | |
65 | |
66 # Don't instrument code dealing with atomics (base::subtle) | |
67 fun:*base*subtle*Release_Store* | |
68 fun:*base*subtle*NoBarrier_CompareAndSwap* | |
69 fun:*base*subtle*NoBarrier_Load* | |
70 # Keep some mangling so we don't match NoBarrier_AtomicIncrement | |
71 fun:*base*subtle23Barrier_AtomicIncrement* | |
72 | |
73 # MD5 computations are very slow due since sums are computed by | |
74 # repeatedly calling tiny functions and is unlikely to race with | |
75 # anything. | |
76 src:*base/md5* | |
77 | |
78 # Don't instrument tcmalloc | |
79 src:*/tcmalloc/* | |
80 | |
81 # This function is heavy in net_unittests | |
82 fun_r:*disk_cache*BackendImpl*CheckAllEntries* | |
83 | |
84 # V8 is a hot-spot under ThreadSanitizer. | |
85 # Lots of tiny functions there... | |
86 # TODO(timurrrr): | |
87 # Can we miss data races on V8 objects due to non thread-safe API calls | |
88 # if we don't instrument v8::internals? | |
89 fun_r:*v8*internal* | |
90 | |
91 # unibrow namespace contains lots of tiny unicode conversion functions. | |
92 fun_hist:*unibrow* | |
93 | |
94 # Histogram has tiny functions that can be called frequently | |
95 fun_hist:*Histogram* | |
96 # Recursively ignore Histrogram::Add and friends, see http://crbug.com/62694. | |
97 fun_r:*4base*9Histogram*3Add* | |
98 fun_r:*4base*16HistogramSamples*3Add* | |
99 fun_r:*4base*13HistogramBase*7AddTime* | |
100 | |
101 # TODO(timurrrr): SKIA - needs separate testing? | |
102 # SKIA unittest is single-threaded... | |
103 # SKIA uses un-annotated atomic refcount and other sync stuff | |
104 # some functions are HEAVY like png, jpeg decoding | |
105 src:*third_party/skia* | |
106 | |
107 # WebKit hotspot | |
108 fun:*png_write* | |
109 | |
110 # This function generates 25% of memory accesses in net_unittests | |
111 fun:*icu_4_2*UnicodeSet*add* | |
112 | |
113 # SQLite has lots of tiny functions and produce too many segments on some tests. | |
114 # See http://crbug.com/56511 | |
115 fun_hist:*sqlite* | |
116 | |
117 # There's some weird failure test going on in this tiny test function in sqlite | |
118 fun_r:threadLockingTest | |
119 | |
120 # Ignore accesses below GetCurrentThreadIdentifier. | |
121 # There is a benign race which is hard to suppress properly, | |
122 # see http://crbug.com/44580 | |
123 fun_r:*BrowserThread*GetCurrentThreadIdentifier* | |
124 | |
125 # BrowserThread accesses MessageLoop::current() in ::CurrentlyOn. | |
126 # We can't use suppressions to hide these reports since the concurrent stack | |
127 # is simply "base::Thread::ThreadMain" | |
128 # See http://crbug.com/63678 | |
129 fun_r:*BrowserThread*CurrentlyOn* | |
130 | |
131 # zlib is smarter than we are, see http://www.zlib.net/zlib_faq.html#faq36 | |
132 fun_r:inflate | |
133 # zlib-related reports, not investigated yet. See http://crbug.com/70932 | |
134 fun_r:*remoting*CompressorZlib*Process* | |
135 | |
136 # X11 reads the _XErrorFunction callback in a racey way, see | |
137 # http://crbug.com/65278 | |
138 fun:XSetErrorHandler | |
139 | |
140 fun:*IPC*Logging*Enable* | |
141 fun:*IPC*Logging*Disable* | |
142 | |
143 # TSan doesn't support lockf and hence shared memory locks in this function; | |
144 # http://crbug.com/45083 | |
145 fun_r:*base*StatsTable*AddCounter* | |
146 | |
147 # TSan doesn't understand internal libc locks, see http://crbug.com/71435 | |
148 fun_r:mbsrtowcs | |
149 | |
150 # gethostbyname2_r is thread-safe, however ThreadSanitizer reports races inside
it and | |
151 # (sometimes) in __nss_* functions below it. | |
152 # This may be related to | |
153 # https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/59449 | |
154 fun_r:gethostbyname2_r* | |
155 | |
156 # TODO(timurrrr): remove this when TSan is updated past r3232 | |
157 fun_r:gaih_inet | |
158 | |
159 # Strange reports below _IO_getline, every time in "Concurrent access". | |
160 # Probably the reports are there since we're missing the libc internal locks | |
161 fun_r:_IO_getline* | |
162 | |
163 # A benign race in glib on something called "contention_counter". | |
164 fun:g_slice_alloc | |
165 | |
166 # A benign race in glibc on "random_time_bits". | |
167 fun:__gen_tempname | |
168 | |
169 # A probably-benign race on '__have_o_cloexec' in opendir/__alloc_dir, | |
170 # see http://crbug.com/125928. | |
171 fun_r:__alloc_dir | |
172 fun_r:opendir | |
173 | |
174 # The sqlite cache is racing against a few different stacktraces, | |
175 # so let's ignore it recursively. See http://crbug.com/84094 | |
176 fun_r:pcache1Fetch | |
177 | |
178 # "Suppress" a data race in TraceLog::GetCategory which has | |
179 # fun:MessageLoop::RunTask at the top of the "current" stack which we don't want | |
180 # to suppress. See http://crbug.com/98926 | |
181 fun:*base*debug*TraceLog*GetCategoryInternal* | |
182 | |
183 # libc threading on GCC 4.6 | |
184 fun:arena_thread_freeres | |
185 | |
186 # __strncasecmp_l_ssse3 overreads the buffer causing TSan to report a data race | |
187 # on another object. See http://crbug.com/177074 | |
188 fun:*strncasecmp* | |
189 fun:*strcasecmp* | |
OLD | NEW |