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