1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107

build / sanitizers / tsan_suppressions.cc [blame]

// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file contains the default suppressions for ThreadSanitizer.
// You can also pass additional suppressions via TSAN_OPTIONS:
// TSAN_OPTIONS=suppressions=/path/to/suppressions. Please refer to
// http://dev.chromium.org/developers/testing/threadsanitizer-tsan-v2
// for more info.

#if defined(THREAD_SANITIZER)

// Please make sure the code below declares a single string variable
// kTSanDefaultSuppressions contains TSan suppressions delimited by newlines.
// See http://dev.chromium.org/developers/testing/threadsanitizer-tsan-v2
// for the instructions on writing suppressions.
char kTSanDefaultSuppressions[] =
    // False positives in libdbus.so, libdconfsettings.so, libflashplayer.so,
    // libgio.so, libglib.so, libgobject.so, libfontconfig.so.1 and
    // swrast_dri.so.
    // Since we don't instrument them, we cannot reason about the
    // synchronization in them.
    "race:libdbus*.so\n"
    "race:libdconfsettings*.so\n"
    "race:libflashplayer.so\n"
    "race:libgio*.so\n"
    "race:libglib*.so\n"
    "race:libgobject*.so\n"
    "race:libfontconfig.so.1\n"
    "race:swrast_dri.so\n"

    // Intentional race in ToolsSanityTest.DataRace in base_unittests.
    "race:base/tools_sanity_unittest.cc\n"

    // Data race caused by swapping out the network change notifier with a mock
    // [test-only]. http://crbug.com/927330.
    "race:content/browser/net_info_browsertest.cc\n"

    // http://crbug.com/244856
    "race:libpulsecommon*.so\n"

    // http://crbug.com/476529
    "deadlock:cc::VideoLayerImpl::WillDraw\n"

    // http://crbug.com/328868
    "race:PR_Lock\n"

    // False positive in libc's tzset_internal, http://crbug.com/379738.
    "race:tzset_internal\n"

    // http://crbug.com/380554
    "deadlock:g_type_add_interface_static\n"

    // Lock inversion in third party code, won't fix.
    // https://crbug.com/455638
    "deadlock:dbus::Bus::ShutdownAndBlock\n"

    // https://crbug.com/459429
    "race:randomnessPid\n"

    // http://crbug.com/691029
    "deadlock:libGLX.so*\n"

    //  http://crbug.com/973947
    "deadlock:libnvidia-glsi.so*\n"

    // http://crbug.com/695929
    "race:base::i18n::IsRTL\n"
    "race:base::i18n::SetICUDefaultLocale\n"

    // http://crbug.com/927330
    "race:net::(anonymous namespace)::g_network_change_notifier\n"

    // Harmless data races, see WTF::StringImpl::Release code comments.
    "race:scoped_refptr<WTF::StringImpl>::AddRef\n"
    "race:scoped_refptr<WTF::StringImpl>::Release\n"

    // Harmless data race in ipcz block allocation. See comments in
    // ipcz::BlockAllocator::Allocate().
    "race:ipcz::BlockAllocator::Allocate\n"

    // https://crbug.com/1405439
    "race:*::perfetto_track_event::internal::g_category_state_storage\n"
    "race:perfetto::DataSource*::static_state_\n"
    "race:perfetto::*::ResetForTesting\n"

    // https://crbug.com/327473683
    "race:SetCoveredByBucketing\n"

    // In V8 each global safepoint might lock isolate mutexes in a different
    // order. This is allowed in this context as it is always guarded by a
    // single global mutex.
    "deadlock:GlobalSafepoint::EnterGlobalSafepointScope\n"

    // Logging crash keys is inherently unsafe. We suppress this rather than fix
    // it because OutputCrashKeysToStream is only enabled in non-official builds
    // and the race is therefore not present in released builds.
    "race:crash_reporter::*::OutputCrashKeysToStream\n"

    // Tracing within fuzztest instrumentation, likely intentionally not
    // synchronized for performance.
    "race:SetIsTracing\n"

    // End of suppressions.
    ;  // Please keep this semicolon.

#endif  // THREAD_SANITIZER