| 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 |