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