• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // This file contains the default suppressions for ThreadSanitizer.
6 // You can also pass additional suppressions via TSAN_OPTIONS:
7 // TSAN_OPTIONS=suppressions=/path/to/suppressions. Please refer to
8 // http://dev.chromium.org/developers/testing/threadsanitizer-tsan-v2
9 // for more info.
10 
11 #if defined(THREAD_SANITIZER)
12 
13 // Please make sure the code below declares a single string variable
14 // kTSanDefaultSuppressions contains TSan suppressions delimited by newlines.
15 // See http://dev.chromium.org/developers/testing/threadsanitizer-tsan-v2
16 // for the instructions on writing suppressions.
17 char kTSanDefaultSuppressions[] =
18     // False positives in libdbus.so, libdconfsettings.so, libflashplayer.so,
19     // libgio.so, libglib.so, libgobject.so, and libfontconfig.so.1.
20     // Since we don't instrument them, we cannot reason about the
21     // synchronization in them.
22     "race:libdbus*.so\n"
23     "race:libdconfsettings*.so\n"
24     "race:libflashplayer.so\n"
25     "race:libgio*.so\n"
26     "race:libglib*.so\n"
27     "race:libgobject*.so\n"
28     "race:libfontconfig.so.1\n"
29 
30     // Intentional race in ToolsSanityTest.DataRace in base_unittests.
31     "race:base/tools_sanity_unittest.cc\n"
32 
33     // Data race caused by swapping out the network change notifier with a mock
34     // [test-only]. http://crbug.com/927330.
35     "race:content/browser/net_info_browsertest.cc\n"
36 
37     // http://crbug.com/244856
38     "race:libpulsecommon*.so\n"
39 
40     // http://crbug.com/476529
41     "deadlock:cc::VideoLayerImpl::WillDraw\n"
42 
43     // http://crbug.com/328826
44     "race:skia::(anonymous namespace)::g_pixel_geometry\n"
45 
46     // http://crbug.com/328868
47     "race:PR_Lock\n"
48 
49     // False positive in libc's tzset_internal, http://crbug.com/379738.
50     "race:tzset_internal\n"
51 
52     // http://crbug.com/380554
53     "deadlock:g_type_add_interface_static\n"
54 
55     // Lock inversion in third party code, won't fix.
56     // https://crbug.com/455638
57     "deadlock:dbus::Bus::ShutdownAndBlock\n"
58 
59     // https://crbug.com/459429
60     "race:randomnessPid\n"
61 
62     // http://crbug.com/691029
63     "deadlock:libGLX.so*\n"
64 
65     //  http://crbug.com/973947
66     "deadlock:libnvidia-glsi.so*\n"
67 
68     // http://crbug.com/695929
69     "race:base::i18n::IsRTL\n"
70     "race:base::i18n::SetICUDefaultLocale\n"
71 
72     // http://crbug.com/927330
73     "race:net::(anonymous namespace)::g_network_change_notifier\n"
74 
75     // Harmless data races, see WTF::StringImpl::Release code comments.
76     "race:scoped_refptr<WTF::StringImpl>::AddRef\n"
77     "race:scoped_refptr<WTF::StringImpl>::Release\n"
78 
79     // Harmless data race in ipcz block allocation. See comments in
80     // ipcz::BlockAllocator::Allocate().
81     "race:ipcz::BlockAllocator::Allocate\n"
82 
83     // https://crbug.com/1405439
84     "race:*::perfetto_track_event::internal::g_category_state_storage\n"
85     "race:perfetto::DataSource*::static_state_\n"
86     "race:perfetto::*::ResetForTesting\n"
87 
88     // In V8 each global safepoint might lock isolate mutexes in a different
89     // order. This is allowed in this context as it is always guarded by a
90     // single global mutex.
91     "deadlock:GlobalSafepoint::EnterGlobalSafepointScope\n"
92 
93     // End of suppressions.
94     ;  // Please keep this semicolon.
95 
96 #endif  // THREAD_SANITIZER
97