| # This file lists the functions, object files and source files |
| # which should be ignored (i.e. not instrumented) by ThreadSanitizer. |
| # See http://code.google.com/p/data-race-test/wiki/ThreadSanitizerIgnores. |
| |
| # ignore these libraries |
| obj:*/libfreetype* |
| obj:*/libdbus* |
| |
| # we ignore the whole NSS library for now since |
| # its instrumentation is very slow. |
| # TODO(timurrrr): investigate whether we need to instrument it |
| obj:*/libnss* |
| obj:*/nss/* |
| |
| # ignore pulseaudio - We don't have symbols there and it can be slow otherwise |
| obj:*/libpulse*.so* |
| |
| # ignore this standard stuff |
| fun:clone |
| fun:fork |
| fun:pthread_* |
| fun_r:_pthread_exit |
| fun_r:_pthread_free_pthread_onstack |
| fun_r:random_r |
| fun_r:random |
| fun_r:rand |
| fun_r:srand |
| fun:__new_exitfn |
| fun:_dl_* |
| fun:__dl_* |
| fun:*_setjmp* |
| |
| # dark magic with 'errno' here. |
| fun:sys_* |
| |
| # ignore libc's printf functions |
| fun_r:_IO_* |
| fun:fwrite |
| fun:fflush |
| |
| # False reports on std::string internals, see |
| # http://code.google.com/p/data-race-test/issues/detail?id=40 |
| fun:*_M_mutateE* |
| fun_r:*_M_set_length_and_sharable* |
| fun:*_M_is_leaked* |
| fun:*_M_is_shared* |
| fun:*_M_set_leaked* |
| fun:*_M_set_sharable* |
| |
| # Don't instrument intercepts |
| src:*ts_valgrind_intercepts.c |
| |
| ################################################################## |
| # Don't instrument synchronization code |
| src:*base/threading/thread_local_storage* |
| src:*base/stats_counters* |
| src:*base/synchronization/condition_variable* |
| src:*base/synchronization/lock* |
| src:*base/synchronization/waitable_event* |
| |
| # Don't instrument code dealing with atomics (base::subtle) |
| fun:*base*subtle*Release_Store* |
| fun:*base*subtle*NoBarrier_CompareAndSwap* |
| # Keep some mangling so we don't match NoBarrier_AtomicIncrement |
| fun:*base*subtle23Barrier_AtomicIncrement* |
| |
| # Don't instrument tcmalloc |
| src:*/tcmalloc/* |
| |
| # This function is heavy in net_unittests |
| fun_r:*disk_cache*BackendImpl*CheckAllEntries* |
| |
| # V8 is a hot-spot under ThreadSanitizer. |
| # Lots of tiny functions there... |
| # TODO(timurrrr): |
| # Can we miss data races on V8 objects due to non thread-safe API calls |
| # if we don't instrument v8::internals? |
| fun_r:*v8*internal* |
| |
| # unibrow namespace contains lots of tiny unicode conversion functions. |
| fun_hist:*unibrow* |
| |
| # Histogram has tiny functions that can be called frequently |
| fun_hist:*Histogram* |
| |
| # TODO(timurrrr): SKIA - needs separate testing? |
| # SKIA unittest is single-threaded... |
| # SKIA uses un-annotated atomic refcount and other sync stuff |
| # some functions are HEAVY like png, jpeg decoding |
| src:*third_party/skia* |
| |
| # WebKit hotspot |
| fun:*png_write* |
| |
| # This function generates 25% of memory accesses in net_unittests |
| fun:*icu_4_2*UnicodeSet*add* |
| |
| # SQLite has lots of tiny functions and produce too many segments on some tests. |
| # See http://crbug.com/56511 |
| fun_hist:*sqlite* |
| |
| # There's some weird failure test going on in this tiny test function in sqlite |
| fun_r:threadLockingTest |
| |
| # Ignore accesses below GetCurrentThreadIdentifier. |
| # There is a benign race which is hard to suppress properly, |
| # see http://crbug.com/44580 |
| fun_r:*BrowserThread*GetCurrentThreadIdentifier* |
| |
| # BrowserThread accesses MessageLoop::current() in ::CurrentlyOn. |
| # We can't use suppressions to hide these reports since the concurrent stack |
| # is simply "base::Thread::ThreadMain" |
| # See http://crbug.com/63678 |
| fun_r:*BrowserThread*CurrentlyOn* |
| |
| # zlib is smarter than we are, see http://www.zlib.net/zlib_faq.html#faq36 |
| fun_r:inflate |
| # zlib-related reports, not investigated yet. See http://crbug.com/70932 |
| fun_r:*remoting*CompressorZlib*Process* |
| |
| # X11 reads the _XErrorFunction callback in a racey way, see |
| # http://crbug.com/65278 |
| fun:XSetErrorHandler |
| |
| fun:*IPC*Logging*Enable* |
| fun:*IPC*Logging*Disable* |
| |
| # TSan doesn't support lockf and hence shared memory locks in this function; |
| # http://crbug.com/45083 |
| fun_r:*base*StatsTable*AddCounter* |
| |
| # TSan doesn't understand internal libc locks, see http://crbug.com/71435 |
| fun_r:mbsrtowcs |
| |
| # gethostbyname2_r is thread-safe, however ThreadSanitizer reports races inside it and |
| # (sometimes) in __nss_* functions below it. |
| # This may be related to |
| # https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/59449 |
| fun_r:gethostbyname2_r* |
| |
| # TODO(timurrrr): remove this when TSan is updated past r3232 |
| fun_r:gaih_inet |
| |
| # Strange reports below _IO_getline, every time in "Concurrent access". |
| # Probably the reports are there since we're missing the libc internal locks |
| fun_r:_IO_getline* |
| |
| # A benign race in glib on something called "contention_counter". |
| fun:g_slice_alloc |
| |
| # A benign race in glibc on "random_time_bits". |
| fun:__gen_tempname |
| |
| # The sqlite cache is racing against a few different stacktraces, |
| # so let's ignore it recursively. See http://crbug.com/84094 |
| fun_r:pcache1Fetch |
| |
| # "Suppress" a data race in TraceLog::GetCategory which has |
| # fun:MessageLoop::RunTask at the top of the "current" stack which we don't want |
| # to suppress. See http://crbug.com/98926 |
| fun:*base*debug*TraceLog*GetCategoryInternal* |