New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Jan 21
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 3
Type: Bug



Sign in to add a comment
link

Issue 915219: TSan reports race in sync_integration_tests TwoClientCustomPassphraseSyncTest.ClientsCanSyncDataWhenScryptEncryptionEnabledInOne , EnableDisableSingleClientTest.DoesNotRedownloadAfterKeepDataWithStandaloneTransport , SingleClientDirectorySyncTest.StopThenDisableDeletesDirectory

Reported by thakis@chromium.org, Dec 14 Project Member

Issue description

The two races look similar, so filing just one bug.

https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8927194651205009920/+/steps/sync_integration_tests/0/logs/TwoClientCustomPassphraseSyncTest.ClientsCanSyncDataWhenScryptEncryptionEnabledInOne/0



[ RUN      ] TwoClientCustomPassphraseSyncTest.ClientsCanSyncDataWhenScryptEncryptionEnabledInOne
[12000:12000:1213/232247.936470:11553264905:WARNING:loopback_server.cc(719)] Loopback sync persistent state file does not exist.
Xlib:  extension "RANDR" missing on display ":99".
[12000:12000:1213/232250.659879:ERROR:browser_dm_token_storage_linux.cc(101)] Error: /etc/machine-id contains 0 characters (32 were expected).
[12000:12165:1213/232251.379391:ERROR:bus.cc(396)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[12000:12000:1213/232251.559854:WARNING:password_store_factory.cc(261)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options.

(sync_integration_tests:12000): LIBDBUSMENU-GLIB-WARNING **: Unable to get session bus: Unknown or unsupported transport 'disabled' for address 'disabled:'
[12000:12000:1213/232253.889789:WARNING:password_store_factory.cc(261)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options.
[12000:12000:1213/232254.331943:WARNING:password_store_factory.cc(261)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options.
[12000:12000:1213/232254.742297:WARNING:password_store_factory.cc(261)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options.
[12000:12000:1213/232255.396324:ERROR:account_tracker.cc(263)] OnOAuthError
[12000:12000:1213/232255.396441:WARNING:account_tracker.cc(189)] Failed to get UserInfo for gaia_id_for_user_gmail.com
[12000:12280:1213/232255.431439:WARNING:sync_encryption_handler_impl.cc(1080)] Nigori had empty encryption keybag.
[12000:12280:1213/232255.476260:WARNING:sync_encryption_handler_impl.cc(1080)] Nigori had empty encryption keybag.
[12000:12286:1213/232255.755155:WARNING:sync_encryption_handler_impl.cc(1080)] Nigori had empty encryption keybag.
[12000:12286:1213/232255.768874:WARNING:sync_encryption_handler_impl.cc(1080)] Nigori had empty encryption keybag.
[12000:12000:1213/232255.776516:ERROR:account_tracker.cc(263)] OnOAuthError
[12000:12000:1213/232255.776626:WARNING:account_tracker.cc(189)] Failed to get UserInfo for gaia_id_for_user_gmail.com
==================
WARNING: ThreadSanitizer: data race (pid=12000)
  Read of size 8 at 0x55fe6ac3a6c8 by thread T33 (mutexes: write M945328813020343296):
    #0 base::FeatureList::IsEnabled(base::Feature const&) base/feature_list.cc:200:8 (sync_integration_tests+0x6c6a66d)
    #1 GetDefaultKeyDerivationMethodForCustomPassphrase components/sync/engine_impl/sync_encryption_handler_impl.cc:176:7 (sync_integration_tests+0xa79cf45)
    #2 CreateKeyDerivationParamsForCustomPassphrase components/sync/engine_impl/sync_encryption_handler_impl.cc:189 (sync_integration_tests+0xa79cf45)
    #3 syncer::SyncEncryptionHandlerImpl::SetCustomPassphrase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, syncer::WriteTransaction*, syncer::WriteNode*) components/sync/engine_impl/sync_encryption_handler_impl.cc:1276 (sync_integration_tests+0xa79cf45)
    #4 syncer::SyncEncryptionHandlerImpl::SetEncryptionPassphrase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) components/sync/engine_impl/sync_encryption_handler_impl.cc:455:5 (sync_integration_tests+0xa79ca19)
    #5 syncer::SyncBackendHostCore::DoSetEncryptionPassphrase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) components/sync/driver/glue/sync_backend_host_core.cc:376:42 (sync_integration_tests+0xa71a553)
    #6 Invoke<void (syncer::SyncBackendHostCore::*)(const std::__1::basic_string<char> &), scoped_refptr<syncer::SyncBackendHostCore>, std::__1::basic_string<char> > base/bind_internal.h:516:12 (sync_integration_tests+0xa715a40)
    #7 MakeItSo<void (syncer::SyncBackendHostCore::*)(const std::__1::basic_string<char> &), scoped_refptr<syncer::SyncBackendHostCore>, std::__1::basic_string<char> > base/bind_internal.h:616 (sync_integration_tests+0xa715a40)
    #8 RunImpl<void (syncer::SyncBackendHostCore::*)(const std::__1::basic_string<char> &), std::__1::tuple<scoped_refptr<syncer::SyncBackendHostCore>, std::__1::basic_string<char> >, 0, 1> base/bind_internal.h:689 (sync_integration_tests+0xa715a40)
    #9 base::internal::Invoker<base::internal::BindState<void (syncer::SyncBackendHostCore::*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), scoped_refptr<syncer::SyncBackendHostCore>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, void ()>::RunOnce(base::internal::BindStateBase*) base/bind_internal.h:658 (sync_integration_tests+0xa715a40)
    #10 Run base/callback.h:99:12 (sync_integration_tests+0x6c966df)
    #11 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:99 (sync_integration_tests+0x6c966df)
    #12 base::MessageLoopImpl::RunTask(base::PendingTask*) base/message_loop/message_loop_impl.cc:374:46 (sync_integration_tests+0x6c95460)
    #13 DeferOrRunPendingTask base/message_loop/message_loop_impl.cc:385:5 (sync_integration_tests+0x6c95c5b)
    #14 base::MessageLoopImpl::DoWork() base/message_loop/message_loop_impl.cc:473 (sync_integration_tests+0x6c95c5b)
    #15 non-virtual thunk to base::MessageLoopImpl::DoWork() base/message_loop/message_loop_impl.cc (sync_integration_tests+0x6c95c9d)
    #16 base::MessagePumpDefault::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_default.cc:39:31 (sync_integration_tests+0x6c98b31)
    #17 Run base/message_loop/message_loop_impl.cc:326:12 (sync_integration_tests+0x6c9503f)
    #18 non-virtual thunk to base::MessageLoopImpl::Run(bool) base/message_loop/message_loop_impl.cc (sync_integration_tests+0x6c9503f)
    #19 base::RunLoop::Run() base/run_loop.cc:102:14 (sync_integration_tests+0x6ccd84a)
    #20 base::Thread::Run(base::RunLoop*) base/threading/thread.cc:250:13 (sync_integration_tests+0x6d39aa9)
    #21 base::Thread::ThreadMain() base/threading/thread.cc:332:3 (sync_integration_tests+0x6d39d50)
    #22 base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:81:13 (sync_integration_tests+0x6d956a4)

  Previous write of size 8 at 0x55fe6ac3a6c8 by main thread:
    #0 base::FeatureList::ClearInstanceForTesting() base/feature_list.cc:284:27 (sync_integration_tests+0x6c6aca3)
    #1 base::test::ScopedFeatureList::~ScopedFeatureList() base/test/scoped_feature_list.cc:98:3 (sync_integration_tests+0x6c488e2)
    #2 ~ScopedScryptFeatureToggler chrome/browser/sync/test/integration/encryption_helper.h:80:7 (sync_integration_tests+0x32bef39)
    #3 (anonymous namespace)::TwoClientCustomPassphraseSyncTest_ClientsCanSyncDataWhenScryptEncryptionEnabledInOne_Test::RunTestOnMainThread() chrome/browser/sync/test/integration/two_client_custom_passphrase_sync_test.cc:140 (sync_integration_tests+0x32bef39)
    #4 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() content/public/test/browser_test_base.cc:447:5 (sync_integration_tests+0xe2180fa)
    #5 Invoke<void (content::BrowserTestBase::*)(), content::BrowserTestBase *> base/bind_internal.h:516:12 (sync_integration_tests+0xe218ec8)
    #6 MakeItSo<void (content::BrowserTestBase::*const &)(), content::BrowserTestBase *> base/bind_internal.h:616 (sync_integration_tests+0xe218ec8)
    #7 RunImpl<void (content::BrowserTestBase::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserTestBase> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0xe218ec8)
    #8 base::internal::Invoker<base::internal::BindState<void (content::BrowserTestBase::*)(), base::internal::UnretainedWrapper<content::BrowserTestBase> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0xe218ec8)
    #9 Run base/callback.h:129:12 (sync_integration_tests+0x71d4035)
    #10 ChromeBrowserMainParts::PreMainMessageLoopRunImpl() chrome/browser/chrome_browser_main.cc:1787 (sync_integration_tests+0x71d4035)
    #11 ChromeBrowserMainParts::PreMainMessageLoopRun() chrome/browser/chrome_browser_main.cc:1175:18 (sync_integration_tests+0x71d2770)
    #12 content::BrowserMainLoop::PreMainMessageLoopRun() content/browser/browser_main_loop.cc:983:13 (sync_integration_tests+0x472a525)
    #13 Invoke<int (content::BrowserMainLoop::*)(), content::BrowserMainLoop *> base/bind_internal.h:516:12 (sync_integration_tests+0x472cee8)
    #14 MakeItSo<int (content::BrowserMainLoop::*const &)(), content::BrowserMainLoop *> base/bind_internal.h:616 (sync_integration_tests+0x472cee8)
    #15 RunImpl<int (content::BrowserMainLoop::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserMainLoop> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0x472cee8)
    #16 base::internal::Invoker<base::internal::BindState<int (content::BrowserMainLoop::*)(), base::internal::UnretainedWrapper<content::BrowserMainLoop> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0x472cee8)
    #17 Run base/callback.h:129:12 (sync_integration_tests+0x4d8dbde)
    #18 content::StartupTaskRunner::RunAllTasksNow() content/browser/startup_task_runner.cc:41 (sync_integration_tests+0x4d8dbde)
    #19 content::BrowserMainLoop::CreateStartupTasks() content/browser/browser_main_loop.cc:917:25 (sync_integration_tests+0x4728ce1)
    #20 content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner_impl.cc:144:15 (sync_integration_tests+0x472d6f2)
    #21 content::BrowserMain(content::MainFunctionParams const&) content/browser/browser_main.cc:43:32 (sync_integration_tests+0x472656b)
    #22 RunBrowserProcessMain content/app/content_main_runner_impl.cc:545:10 (sync_integration_tests+0x667fa85)
    #23 content::ContentMainRunnerImpl::RunServiceManager(content::MainFunctionParams&, bool) content/app/content_main_runner_impl.cc:954 (sync_integration_tests+0x667fa85)
    #24 content::ContentMainRunnerImpl::Run(bool) content/app/content_main_runner_impl.cc:868:12 (sync_integration_tests+0x667f4c5)
    #25 content::ContentServiceManagerMainDelegate::RunEmbedderProcess() content/app/content_service_manager_main_delegate.cc:53:32 (sync_integration_tests+0x667bf5f)
    #26 service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:460:29 (sync_integration_tests+0x97a2311)
    #27 content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10 (sync_integration_tests+0x667d23b)
    #28 content::BrowserTestBase::SetUp() content/public/test/browser_test_base.cc:349:3 (sync_integration_tests+0xe217c38)
    #29 InProcessBrowserTest::SetUp() chrome/test/base/in_process_browser_test.cc:284:20 (sync_integration_tests+0x6a82fb0)
    #30 SyncTest::SetUp() chrome/browser/sync/test/integration/sync_test.cc:274:25 (sync_integration_tests+0x6a68676)
    #31 HandleExceptionsInMethodIfSupported<testing::Test, void> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x35133a2)
    #32 testing::Test::Run() third_party/googletest/src/googletest/src/gtest.cc:2517 (sync_integration_tests+0x35133a2)
    #33 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2703:11 (sync_integration_tests+0x3514628)
    #34 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2825:28 (sync_integration_tests+0x3514f56)
    #35 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:5227:43 (sync_integration_tests+0x3525ef6)
    #36 HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x35257d8)
    #37 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc:4835 (sync_integration_tests+0x35257d8)
    #38 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2369:46 (sync_integration_tests+0x6c49ee5)
    #39 base::TestSuite::Run() base/test/test_suite.cc:294 (sync_integration_tests+0x6c49ee5)
    #40 ChromeTestSuiteRunner::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:71:21 (sync_integration_tests+0x6a81e20)
    #41 ChromeTestLauncherDelegate::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:80:19 (sync_integration_tests+0x6a81f2f)
    #42 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) content/public/test/test_launcher.cc:647:31 (sync_integration_tests+0xe21f984)
    #43 LaunchChromeTests(unsigned long, content::TestLauncherDelegate*, int, char**) chrome/test/base/chrome_test_launcher.cc:184:10 (sync_integration_tests+0x6a8247a)
    #44 main chrome/test/base/browser_tests_main.cc:36:10 (sync_integration_tests+0x6a3198c)

  Location is global 'base::(anonymous namespace)::g_feature_list_instance' of size 8 at 0x55fe6ac3a6c8 (sync_integration_tests+0x00000f4626c8)

  Mutex M945328813020343296 is already destroyed.

  Thread T33 'Chrome_SyncThread' (tid=12280, running) created by main thread at:
    #0 pthread_create /b/s/w/ir/cache/builder/src/third_party/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:980 (sync_integration_tests+0x3129256)
    #1 base::(anonymous namespace)::CreateThread(unsigned long, bool, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:120:13 (sync_integration_tests+0x6d950b7)
    #2 base::PlatformThread::CreateWithPriority(unsigned long, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:238:10 (sync_integration_tests+0x6d94fb5)
    #3 base::Thread::StartWithOptions(base::Thread::Options const&) base/threading/thread.cc:112:15 (sync_integration_tests+0x6d395cd)
    #4 browser_sync::ProfileSyncService::StartUpSlowEngineComponents() components/browser_sync/profile_sync_service.cc:542:34 (sync_integration_tests+0xa74088e)
    #5 Invoke<void (browser_sync::ProfileSyncService::*)(), browser_sync::ProfileSyncService *> base/bind_internal.h:516:12 (sync_integration_tests+0xa74a9b8)
    #6 MakeItSo<void (browser_sync::ProfileSyncService::*const &)(), browser_sync::ProfileSyncService *> base/bind_internal.h:616 (sync_integration_tests+0xa74a9b8)
    #7 RunImpl<void (browser_sync::ProfileSyncService::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<browser_sync::ProfileSyncService> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0xa74a9b8)
    #8 base::internal::Invoker<base::internal::BindState<void (browser_sync::ProfileSyncService::*)(), base::internal::UnretainedWrapper<browser_sync::ProfileSyncService> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0xa74a9b8)
    #9 Run base/callback.h:129:12 (sync_integration_tests+0xa74ce8f)
    #10 syncer::StartupController::StartUp(syncer::StartupController::StartUpDeferredOption) components/sync/driver/startup_controller.cc:100 (sync_integration_tests+0xa74ce8f)
    #11 syncer::StartupController::TryStart(bool) components/sync/driver/startup_controller.cc:116:3 (sync_integration_tests+0xa74d24b)
    #12 browser_sync::ProfileSyncService::AccountStateChanged() components/browser_sync/profile_sync_service.cc:400:26 (sync_integration_tests+0xa73c47c)
    #13 Invoke<void (browser_sync::ProfileSyncService::*)(), browser_sync::ProfileSyncService *> base/bind_internal.h:516:12 (sync_integration_tests+0xa74a9b8)
    #14 MakeItSo<void (browser_sync::ProfileSyncService::*const &)(), browser_sync::ProfileSyncService *> base/bind_internal.h:616 (sync_integration_tests+0xa74a9b8)
    #15 RunImpl<void (browser_sync::ProfileSyncService::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<browser_sync::ProfileSyncService> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0xa74a9b8)
    #16 base::internal::Invoker<base::internal::BindState<void (browser_sync::ProfileSyncService::*)(), base::internal::UnretainedWrapper<browser_sync::ProfileSyncService> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0xa74a9b8)
    #17 Run base/callback.h:129:12 (sync_integration_tests+0xa7bc5c8)
    #18 browser_sync::SyncAuthManager::UpdateSyncAccountIfNecessary() components/browser_sync/sync_auth_manager.cc:395 (sync_integration_tests+0xa7bc5c8)
    #19 browser_sync::SyncAuthManager::OnPrimaryAccountSet(AccountInfo const&) components/browser_sync/sync_auth_manager.cc:249:3 (sync_integration_tests+0xa7bc339)
    #20 identity::IdentityManager::GoogleSigninSucceeded(AccountInfo const&) services/identity/public/cpp/identity_manager.cc:297:14 (sync_integration_tests+0x4454119)
    #21 SigninManager::FireGoogleSigninSucceeded() components/signin/core/browser/signin_manager.cc:445:14 (sync_integration_tests+0x99511bf)
    #22 SigninManager::OnSignedIn() components/signin/core/browser/signin_manager.cc:434:5 (sync_integration_tests+0x9950d63)
    #23 SigninManager::CompletePendingSignin() components/signin/core/browser/signin_manager.cc:392:3 (sync_integration_tests+0x9950950)
    #24 identity::SetPrimaryAccount(identity::IdentityManager*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) services/identity/public/cpp/identity_test_utils.cc:170:24 (sync_integration_tests+0x69b741f)
    #25 identity::MakePrimaryAccountAvailable(identity::IdentityManager*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) services/identity/public/cpp/identity_test_utils.cc:208:30 (sync_integration_tests+0x69b79ee)
    #26 ProfileSyncServiceHarness::SignInPrimaryAccount() chrome/browser/sync/test/integration/profile_sync_service_harness.cc:153:9 (sync_integration_tests+0x6a555f1)
    #27 ProfileSyncServiceHarness::SetupSyncImpl(syncer::EnumSet<syncer::ModelType, (syncer::ModelType)2, (syncer::ModelType)42>, bool, base::Optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&) chrome/browser/sync/test/integration/profile_sync_service_harness.cc:251:8 (sync_integration_tests+0x6a55c23)
    #28 ProfileSyncServiceHarness::SetupSync(syncer::EnumSet<syncer::ModelType, (syncer::ModelType)2, (syncer::ModelType)42>) chrome/browser/sync/test/integration/profile_sync_service_harness.cc:200:10 (sync_integration_tests+0x6a558a2)
    #29 SyncTest::SetupSync() chrome/browser/sync/test/integration/sync_test.cc:835:33 (sync_integration_tests+0x6a6ce25)
    #30 (anonymous namespace)::TwoClientCustomPassphraseSyncTest_ClientsCanSyncDataWhenScryptEncryptionEnabledInOne_Test::RunTestOnMainThread() chrome/browser/sync/test/integration/two_client_custom_passphrase_sync_test.cc:133:3 (sync_integration_tests+0x32bee6e)
    #31 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() content/public/test/browser_test_base.cc:447:5 (sync_integration_tests+0xe2180fa)
    #32 Invoke<void (content::BrowserTestBase::*)(), content::BrowserTestBase *> base/bind_internal.h:516:12 (sync_integration_tests+0xe218ec8)
    #33 MakeItSo<void (content::BrowserTestBase::*const &)(), content::BrowserTestBase *> base/bind_internal.h:616 (sync_integration_tests+0xe218ec8)
    #34 RunImpl<void (content::BrowserTestBase::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserTestBase> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0xe218ec8)
    #35 base::internal::Invoker<base::internal::BindState<void (content::BrowserTestBase::*)(), base::internal::UnretainedWrapper<content::BrowserTestBase> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0xe218ec8)
    #36 Run base/callback.h:129:12 (sync_integration_tests+0x71d4035)
    #37 ChromeBrowserMainParts::PreMainMessageLoopRunImpl() chrome/browser/chrome_browser_main.cc:1787 (sync_integration_tests+0x71d4035)
    #38 ChromeBrowserMainParts::PreMainMessageLoopRun() chrome/browser/chrome_browser_main.cc:1175:18 (sync_integration_tests+0x71d2770)
    #39 content::BrowserMainLoop::PreMainMessageLoopRun() content/browser/browser_main_loop.cc:983:13 (sync_integration_tests+0x472a525)
    #40 Invoke<int (content::BrowserMainLoop::*)(), content::BrowserMainLoop *> base/bind_internal.h:516:12 (sync_integration_tests+0x472cee8)
    #41 MakeItSo<int (content::BrowserMainLoop::*const &)(), content::BrowserMainLoop *> base/bind_internal.h:616 (sync_integration_tests+0x472cee8)
    #42 RunImpl<int (content::BrowserMainLoop::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserMainLoop> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0x472cee8)
    #43 base::internal::Invoker<base::internal::BindState<int (content::BrowserMainLoop::*)(), base::internal::UnretainedWrapper<content::BrowserMainLoop> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0x472cee8)
    #44 Run base/callback.h:129:12 (sync_integration_tests+0x4d8dbde)
    #45 content::StartupTaskRunner::RunAllTasksNow() content/browser/startup_task_runner.cc:41 (sync_integration_tests+0x4d8dbde)
    #46 content::BrowserMainLoop::CreateStartupTasks() content/browser/browser_main_loop.cc:917:25 (sync_integration_tests+0x4728ce1)
    #47 content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner_impl.cc:144:15 (sync_integration_tests+0x472d6f2)
    #48 content::BrowserMain(content::MainFunctionParams const&) content/browser/browser_main.cc:43:32 (sync_integration_tests+0x472656b)
    #49 RunBrowserProcessMain content/app/content_main_runner_impl.cc:545:10 (sync_integration_tests+0x667fa85)
    #50 content::ContentMainRunnerImpl::RunServiceManager(content::MainFunctionParams&, bool) content/app/content_main_runner_impl.cc:954 (sync_integration_tests+0x667fa85)
    #51 content::ContentMainRunnerImpl::Run(bool) content/app/content_main_runner_impl.cc:868:12 (sync_integration_tests+0x667f4c5)
    #52 content::ContentServiceManagerMainDelegate::RunEmbedderProcess() content/app/content_service_manager_main_delegate.cc:53:32 (sync_integration_tests+0x667bf5f)
    #53 service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:460:29 (sync_integration_tests+0x97a2311)
    #54 content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10 (sync_integration_tests+0x667d23b)
    #55 content::BrowserTestBase::SetUp() content/public/test/browser_test_base.cc:349:3 (sync_integration_tests+0xe217c38)
    #56 InProcessBrowserTest::SetUp() chrome/test/base/in_process_browser_test.cc:284:20 (sync_integration_tests+0x6a82fb0)
    #57 SyncTest::SetUp() chrome/browser/sync/test/integration/sync_test.cc:274:25 (sync_integration_tests+0x6a68676)
    #58 HandleExceptionsInMethodIfSupported<testing::Test, void> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x35133a2)
    #59 testing::Test::Run() third_party/googletest/src/googletest/src/gtest.cc:2517 (sync_integration_tests+0x35133a2)
    #60 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2703:11 (sync_integration_tests+0x3514628)
    #61 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2825:28 (sync_integration_tests+0x3514f56)
    #62 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:5227:43 (sync_integration_tests+0x3525ef6)
    #63 HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x35257d8)
    #64 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc:4835 (sync_integration_tests+0x35257d8)
    #65 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2369:46 (sync_integration_tests+0x6c49ee5)
    #66 base::TestSuite::Run() base/test/test_suite.cc:294 (sync_integration_tests+0x6c49ee5)
    #67 ChromeTestSuiteRunner::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:71:21 (sync_integration_tests+0x6a81e20)
    #68 ChromeTestLauncherDelegate::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:80:19 (sync_integration_tests+0x6a81f2f)
    #69 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) content/public/test/test_launcher.cc:647:31 (sync_integration_tests+0xe21f984)
    #70 LaunchChromeTests(unsigned long, content::TestLauncherDelegate*, int, char**) chrome/test/base/chrome_test_launcher.cc:184:10 (sync_integration_tests+0x6a8247a)
    #71 main chrome/test/base/browser_tests_main.cc:36:10 (sync_integration_tests+0x6a3198c)

SUMMARY: ThreadSanitizer: data race base/feature_list.cc:200:8 in base::FeatureList::IsEnabled(base::Feature const&)



https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8927194651205009920/+/steps/sync_integration_tests/0/logs/EnableDisableSingleClientTest.DoesNotRedownloadAfterKeepDataWithStandaloneTransport/0


[ RUN      ] EnableDisableSingleClientTest.DoesNotRedownloadAfterKeepDataWithStandaloneTransport
[473:473:1213/231822.017620:11287346043:WARNING:loopback_server.cc(719)] Loopback sync persistent state file does not exist.
Xlib:  extension "RANDR" missing on display ":99".
[473:473:1213/231823.799336:ERROR:browser_dm_token_storage_linux.cc(101)] Error: /etc/machine-id contains 0 characters (32 were expected).
[473:607:1213/231824.589613:ERROR:bus.cc(396)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[473:473:1213/231824.661125:WARNING:password_store_factory.cc(261)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options.

(sync_integration_tests:473): LIBDBUSMENU-GLIB-WARNING **: Unable to get session bus: Unknown or unsupported transport 'disabled' for address 'disabled:'
[473:473:1213/231827.256208:WARNING:password_store_factory.cc(261)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options.
[473:473:1213/231827.615200:WARNING:password_store_factory.cc(261)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options.
[473:735:1213/231827.911926:WARNING:sync_encryption_handler_impl.cc(1080)] Nigori had empty encryption keybag.
[473:735:1213/231827.946346:WARNING:sync_encryption_handler_impl.cc(1080)] Nigori had empty encryption keybag.
[473:473:1213/231827.975461:ERROR:account_tracker.cc(263)] OnOAuthError
[473:473:1213/231827.975609:WARNING:account_tracker.cc(189)] Failed to get UserInfo for gaia_id_for_user_gmail.com
[473:735:1213/231828.391068:WARNING:syncer_proto_util.cc(342)] Error posting from syncer: Response Code (bogus on error): -1 Content-Length (bogus on error): -1 Server Status: CONNECTION_UNAVAILABLE
[473:735:1213/231828.391332:ERROR:get_updates_processor.cc(244)] PostClientToServerMessage() failed during GetUpdates
==================
WARNING: ThreadSanitizer: data race (pid=473)
  Write of size 8 at 0x563e7863e6c8 by main thread:
    #0 base::FeatureList::ClearInstanceForTesting() base/feature_list.cc:284:27 (sync_integration_tests+0x6c6aca3)
    #1 base::test::ScopedFeatureList::~ScopedFeatureList() base/test/scoped_feature_list.cc:98:3 (sync_integration_tests+0x6c488e2)
    #2 (anonymous namespace)::EnableDisableSingleClientTest_DoesNotRedownloadAfterKeepDataWithStandaloneTransport_Test::RunTestOnMainThread() chrome/browser/sync/test/integration/enable_disable_test.cc:418:1 (sync_integration_tests+0x31a5db1)
    #3 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() content/public/test/browser_test_base.cc:447:5 (sync_integration_tests+0xe2180fa)
    #4 Invoke<void (content::BrowserTestBase::*)(), content::BrowserTestBase *> base/bind_internal.h:516:12 (sync_integration_tests+0xe218ec8)
    #5 MakeItSo<void (content::BrowserTestBase::*const &)(), content::BrowserTestBase *> base/bind_internal.h:616 (sync_integration_tests+0xe218ec8)
    #6 RunImpl<void (content::BrowserTestBase::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserTestBase> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0xe218ec8)
    #7 base::internal::Invoker<base::internal::BindState<void (content::BrowserTestBase::*)(), base::internal::UnretainedWrapper<content::BrowserTestBase> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0xe218ec8)
    #8 Run base/callback.h:129:12 (sync_integration_tests+0x71d4035)
    #9 ChromeBrowserMainParts::PreMainMessageLoopRunImpl() chrome/browser/chrome_browser_main.cc:1787 (sync_integration_tests+0x71d4035)
    #10 ChromeBrowserMainParts::PreMainMessageLoopRun() chrome/browser/chrome_browser_main.cc:1175:18 (sync_integration_tests+0x71d2770)
    #11 content::BrowserMainLoop::PreMainMessageLoopRun() content/browser/browser_main_loop.cc:983:13 (sync_integration_tests+0x472a525)
    #12 Invoke<int (content::BrowserMainLoop::*)(), content::BrowserMainLoop *> base/bind_internal.h:516:12 (sync_integration_tests+0x472cee8)
    #13 MakeItSo<int (content::BrowserMainLoop::*const &)(), content::BrowserMainLoop *> base/bind_internal.h:616 (sync_integration_tests+0x472cee8)
    #14 RunImpl<int (content::BrowserMainLoop::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserMainLoop> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0x472cee8)
    #15 base::internal::Invoker<base::internal::BindState<int (content::BrowserMainLoop::*)(), base::internal::UnretainedWrapper<content::BrowserMainLoop> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0x472cee8)
    #16 Run base/callback.h:129:12 (sync_integration_tests+0x4d8dbde)
    #17 content::StartupTaskRunner::RunAllTasksNow() content/browser/startup_task_runner.cc:41 (sync_integration_tests+0x4d8dbde)
    #18 content::BrowserMainLoop::CreateStartupTasks() content/browser/browser_main_loop.cc:917:25 (sync_integration_tests+0x4728ce1)
    #19 content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner_impl.cc:144:15 (sync_integration_tests+0x472d6f2)
    #20 content::BrowserMain(content::MainFunctionParams const&) content/browser/browser_main.cc:43:32 (sync_integration_tests+0x472656b)
    #21 RunBrowserProcessMain content/app/content_main_runner_impl.cc:545:10 (sync_integration_tests+0x667fa85)
    #22 content::ContentMainRunnerImpl::RunServiceManager(content::MainFunctionParams&, bool) content/app/content_main_runner_impl.cc:954 (sync_integration_tests+0x667fa85)
    #23 content::ContentMainRunnerImpl::Run(bool) content/app/content_main_runner_impl.cc:868:12 (sync_integration_tests+0x667f4c5)
    #24 content::ContentServiceManagerMainDelegate::RunEmbedderProcess() content/app/content_service_manager_main_delegate.cc:53:32 (sync_integration_tests+0x667bf5f)
    #25 service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:460:29 (sync_integration_tests+0x97a2311)
    #26 content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10 (sync_integration_tests+0x667d23b)
    #27 content::BrowserTestBase::SetUp() content/public/test/browser_test_base.cc:349:3 (sync_integration_tests+0xe217c38)
    #28 InProcessBrowserTest::SetUp() chrome/test/base/in_process_browser_test.cc:284:20 (sync_integration_tests+0x6a82fb0)
    #29 SyncTest::SetUp() chrome/browser/sync/test/integration/sync_test.cc:274:25 (sync_integration_tests+0x6a68676)
    #30 HandleExceptionsInMethodIfSupported<testing::Test, void> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x35133a2)
    #31 testing::Test::Run() third_party/googletest/src/googletest/src/gtest.cc:2517 (sync_integration_tests+0x35133a2)
    #32 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2703:11 (sync_integration_tests+0x3514628)
    #33 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2825:28 (sync_integration_tests+0x3514f56)
    #34 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:5227:43 (sync_integration_tests+0x3525ef6)
    #35 HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x35257d8)
    #36 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc:4835 (sync_integration_tests+0x35257d8)
    #37 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2369:46 (sync_integration_tests+0x6c49ee5)
    #38 base::TestSuite::Run() base/test/test_suite.cc:294 (sync_integration_tests+0x6c49ee5)
    #39 ChromeTestSuiteRunner::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:71:21 (sync_integration_tests+0x6a81e20)
    #40 ChromeTestLauncherDelegate::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:80:19 (sync_integration_tests+0x6a81f2f)
    #41 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) content/public/test/test_launcher.cc:647:31 (sync_integration_tests+0xe21f984)
    #42 LaunchChromeTests(unsigned long, content::TestLauncherDelegate*, int, char**) chrome/test/base/chrome_test_launcher.cc:184:10 (sync_integration_tests+0x6a8247a)
    #43 main chrome/test/base/browser_tests_main.cc:36:10 (sync_integration_tests+0x6a3198c)

  Previous read of size 8 at 0x563e7863e6c8 by thread T32:
    #0 base::FeatureList::IsEnabled(base::Feature const&) base/feature_list.cc:200:8 (sync_integration_tests+0x6c6a66d)
    #1 ComputeLastPollOnStart components/sync/engine_impl/sync_scheduler_impl.cc:240:7 (sync_integration_tests+0xa75a3b1)
    #2 syncer::SyncSchedulerImpl::Start(syncer::SyncScheduler::Mode, base::Time) components/sync/engine_impl/sync_scheduler_impl.cc:218 (sync_integration_tests+0xa75a3b1)
    #3 syncer::SyncManagerImpl::StartSyncingNormally(base::Time) components/sync/engine_impl/sync_manager_impl.cc:391:15 (sync_integration_tests+0xa753481)
    #4 syncer::SyncBackendHostCore::DoStartSyncing(base::Time) components/sync/driver/glue/sync_backend_host_core.cc:370:18 (sync_integration_tests+0xa71a4ec)
    #5 Invoke<void (syncer::SyncBackendHostCore::*)(base::Time), scoped_refptr<syncer::SyncBackendHostCore>, base::Time> base/bind_internal.h:516:12 (sync_integration_tests+0xa715936)
    #6 MakeItSo<void (syncer::SyncBackendHostCore::*)(base::Time), scoped_refptr<syncer::SyncBackendHostCore>, base::Time> base/bind_internal.h:616 (sync_integration_tests+0xa715936)
    #7 RunImpl<void (syncer::SyncBackendHostCore::*)(base::Time), std::__1::tuple<scoped_refptr<syncer::SyncBackendHostCore>, base::Time>, 0, 1> base/bind_internal.h:689 (sync_integration_tests+0xa715936)
    #8 base::internal::Invoker<base::internal::BindState<void (syncer::SyncBackendHostCore::*)(base::Time), scoped_refptr<syncer::SyncBackendHostCore>, base::Time>, void ()>::RunOnce(base::internal::BindStateBase*) base/bind_internal.h:658 (sync_integration_tests+0xa715936)
    #9 Run base/callback.h:99:12 (sync_integration_tests+0x6c966df)
    #10 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:99 (sync_integration_tests+0x6c966df)
    #11 base::MessageLoopImpl::RunTask(base::PendingTask*) base/message_loop/message_loop_impl.cc:374:46 (sync_integration_tests+0x6c95460)
    #12 DeferOrRunPendingTask base/message_loop/message_loop_impl.cc:385:5 (sync_integration_tests+0x6c95c5b)
    #13 base::MessageLoopImpl::DoWork() base/message_loop/message_loop_impl.cc:473 (sync_integration_tests+0x6c95c5b)
    #14 non-virtual thunk to base::MessageLoopImpl::DoWork() base/message_loop/message_loop_impl.cc (sync_integration_tests+0x6c95c9d)
    #15 base::MessagePumpDefault::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_default.cc:39:31 (sync_integration_tests+0x6c98b31)
    #16 Run base/message_loop/message_loop_impl.cc:326:12 (sync_integration_tests+0x6c9503f)
    #17 non-virtual thunk to base::MessageLoopImpl::Run(bool) base/message_loop/message_loop_impl.cc (sync_integration_tests+0x6c9503f)
    #18 base::RunLoop::Run() base/run_loop.cc:102:14 (sync_integration_tests+0x6ccd84a)
    #19 base::Thread::Run(base::RunLoop*) base/threading/thread.cc:250:13 (sync_integration_tests+0x6d39aa9)
    #20 base::Thread::ThreadMain() base/threading/thread.cc:332:3 (sync_integration_tests+0x6d39d50)
    #21 base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:81:13 (sync_integration_tests+0x6d956a4)

  Location is global 'base::(anonymous namespace)::g_feature_list_instance' of size 8 at 0x563e7863e6c8 (sync_integration_tests+0x00000f4626c8)

  Thread T32 'Chrome_SyncThread' (tid=735, running) created by main thread at:
    #0 pthread_create /b/s/w/ir/cache/builder/src/third_party/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:980 (sync_integration_tests+0x3129256)
    #1 base::(anonymous namespace)::CreateThread(unsigned long, bool, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:120:13 (sync_integration_tests+0x6d950b7)
    #2 base::PlatformThread::CreateWithPriority(unsigned long, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:238:10 (sync_integration_tests+0x6d94fb5)
    #3 base::Thread::StartWithOptions(base::Thread::Options const&) base/threading/thread.cc:112:15 (sync_integration_tests+0x6d395cd)
    #4 browser_sync::ProfileSyncService::StartUpSlowEngineComponents() components/browser_sync/profile_sync_service.cc:542:34 (sync_integration_tests+0xa74088e)
    #5 Invoke<void (browser_sync::ProfileSyncService::*)(), browser_sync::ProfileSyncService *> base/bind_internal.h:516:12 (sync_integration_tests+0xa74a9b8)
    #6 MakeItSo<void (browser_sync::ProfileSyncService::*const &)(), browser_sync::ProfileSyncService *> base/bind_internal.h:616 (sync_integration_tests+0xa74a9b8)
    #7 RunImpl<void (browser_sync::ProfileSyncService::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<browser_sync::ProfileSyncService> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0xa74a9b8)
    #8 base::internal::Invoker<base::internal::BindState<void (browser_sync::ProfileSyncService::*)(), base::internal::UnretainedWrapper<browser_sync::ProfileSyncService> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0xa74a9b8)
    #9 Run base/callback.h:129:12 (sync_integration_tests+0xa74ce8f)
    #10 syncer::StartupController::StartUp(syncer::StartupController::StartUpDeferredOption) components/sync/driver/startup_controller.cc:100 (sync_integration_tests+0xa74ce8f)
    #11 syncer::StartupController::TryStart(bool) components/sync/driver/startup_controller.cc:116:3 (sync_integration_tests+0xa74d24b)
    #12 browser_sync::ProfileSyncService::AccountStateChanged() components/browser_sync/profile_sync_service.cc:400:26 (sync_integration_tests+0xa73c47c)
    #13 Invoke<void (browser_sync::ProfileSyncService::*)(), browser_sync::ProfileSyncService *> base/bind_internal.h:516:12 (sync_integration_tests+0xa74a9b8)
    #14 MakeItSo<void (browser_sync::ProfileSyncService::*const &)(), browser_sync::ProfileSyncService *> base/bind_internal.h:616 (sync_integration_tests+0xa74a9b8)
    #15 RunImpl<void (browser_sync::ProfileSyncService::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<browser_sync::ProfileSyncService> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0xa74a9b8)
    #16 base::internal::Invoker<base::internal::BindState<void (browser_sync::ProfileSyncService::*)(), base::internal::UnretainedWrapper<browser_sync::ProfileSyncService> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0xa74a9b8)
    #17 Run base/callback.h:129:12 (sync_integration_tests+0xa7bc5c8)
    #18 browser_sync::SyncAuthManager::UpdateSyncAccountIfNecessary() components/browser_sync/sync_auth_manager.cc:395 (sync_integration_tests+0xa7bc5c8)
    #19 browser_sync::SyncAuthManager::OnPrimaryAccountSet(AccountInfo const&) components/browser_sync/sync_auth_manager.cc:249:3 (sync_integration_tests+0xa7bc339)
    #20 identity::IdentityManager::GoogleSigninSucceeded(AccountInfo const&) services/identity/public/cpp/identity_manager.cc:297:14 (sync_integration_tests+0x4454119)
    #21 SigninManager::FireGoogleSigninSucceeded() components/signin/core/browser/signin_manager.cc:445:14 (sync_integration_tests+0x99511bf)
    #22 SigninManager::OnSignedIn() components/signin/core/browser/signin_manager.cc:434:5 (sync_integration_tests+0x9950d63)
    #23 SigninManager::CompletePendingSignin() components/signin/core/browser/signin_manager.cc:392:3 (sync_integration_tests+0x9950950)
    #24 identity::SetPrimaryAccount(identity::IdentityManager*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) services/identity/public/cpp/identity_test_utils.cc:170:24 (sync_integration_tests+0x69b741f)
    #25 identity::MakePrimaryAccountAvailable(identity::IdentityManager*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) services/identity/public/cpp/identity_test_utils.cc:208:30 (sync_integration_tests+0x69b79ee)
    #26 ProfileSyncServiceHarness::SignInPrimaryAccount() chrome/browser/sync/test/integration/profile_sync_service_harness.cc:153:9 (sync_integration_tests+0x6a555f1)
    #27 ProfileSyncServiceHarness::SetupSyncImpl(syncer::EnumSet<syncer::ModelType, (syncer::ModelType)2, (syncer::ModelType)42>, bool, base::Optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&) chrome/browser/sync/test/integration/profile_sync_service_harness.cc:251:8 (sync_integration_tests+0x6a55c23)
    #28 SetupSync chrome/browser/sync/test/integration/profile_sync_service_harness.cc:200:10 (sync_integration_tests+0x6a556c3)
    #29 ProfileSyncServiceHarness::SetupSync() chrome/browser/sync/test/integration/profile_sync_service_harness.cc:174 (sync_integration_tests+0x6a556c3)
    #30 (anonymous namespace)::EnableDisableSingleClientTest_DoesNotRedownloadAfterKeepDataWithStandaloneTransport_Test::RunTestOnMainThread() chrome/browser/sync/test/integration/enable_disable_test.cc:392:3 (sync_integration_tests+0x31a536f)
    #31 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() content/public/test/browser_test_base.cc:447:5 (sync_integration_tests+0xe2180fa)
    #32 Invoke<void (content::BrowserTestBase::*)(), content::BrowserTestBase *> base/bind_internal.h:516:12 (sync_integration_tests+0xe218ec8)
    #33 MakeItSo<void (content::BrowserTestBase::*const &)(), content::BrowserTestBase *> base/bind_internal.h:616 (sync_integration_tests+0xe218ec8)
    #34 RunImpl<void (content::BrowserTestBase::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserTestBase> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0xe218ec8)
    #35 base::internal::Invoker<base::internal::BindState<void (content::BrowserTestBase::*)(), base::internal::UnretainedWrapper<content::BrowserTestBase> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0xe218ec8)
    #36 Run base/callback.h:129:12 (sync_integration_tests+0x71d4035)
    #37 ChromeBrowserMainParts::PreMainMessageLoopRunImpl() chrome/browser/chrome_browser_main.cc:1787 (sync_integration_tests+0x71d4035)
    #38 ChromeBrowserMainParts::PreMainMessageLoopRun() chrome/browser/chrome_browser_main.cc:1175:18 (sync_integration_tests+0x71d2770)
    #39 content::BrowserMainLoop::PreMainMessageLoopRun() content/browser/browser_main_loop.cc:983:13 (sync_integration_tests+0x472a525)
    #40 Invoke<int (content::BrowserMainLoop::*)(), content::BrowserMainLoop *> base/bind_internal.h:516:12 (sync_integration_tests+0x472cee8)
    #41 MakeItSo<int (content::BrowserMainLoop::*const &)(), content::BrowserMainLoop *> base/bind_internal.h:616 (sync_integration_tests+0x472cee8)
    #42 RunImpl<int (content::BrowserMainLoop::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserMainLoop> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0x472cee8)
    #43 base::internal::Invoker<base::internal::BindState<int (content::BrowserMainLoop::*)(), base::internal::UnretainedWrapper<content::BrowserMainLoop> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0x472cee8)
    #44 Run base/callback.h:129:12 (sync_integration_tests+0x4d8dbde)
    #45 content::StartupTaskRunner::RunAllTasksNow() content/browser/startup_task_runner.cc:41 (sync_integration_tests+0x4d8dbde)
    #46 content::BrowserMainLoop::CreateStartupTasks() content/browser/browser_main_loop.cc:917:25 (sync_integration_tests+0x4728ce1)
    #47 content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner_impl.cc:144:15 (sync_integration_tests+0x472d6f2)
    #48 content::BrowserMain(content::MainFunctionParams const&) content/browser/browser_main.cc:43:32 (sync_integration_tests+0x472656b)
    #49 RunBrowserProcessMain content/app/content_main_runner_impl.cc:545:10 (sync_integration_tests+0x667fa85)
    #50 content::ContentMainRunnerImpl::RunServiceManager(content::MainFunctionParams&, bool) content/app/content_main_runner_impl.cc:954 (sync_integration_tests+0x667fa85)
    #51 content::ContentMainRunnerImpl::Run(bool) content/app/content_main_runner_impl.cc:868:12 (sync_integration_tests+0x667f4c5)
    #52 content::ContentServiceManagerMainDelegate::RunEmbedderProcess() content/app/content_service_manager_main_delegate.cc:53:32 (sync_integration_tests+0x667bf5f)
    #53 service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:460:29 (sync_integration_tests+0x97a2311)
    #54 content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10 (sync_integration_tests+0x667d23b)
    #55 content::BrowserTestBase::SetUp() content/public/test/browser_test_base.cc:349:3 (sync_integration_tests+0xe217c38)
    #56 InProcessBrowserTest::SetUp() chrome/test/base/in_process_browser_test.cc:284:20 (sync_integration_tests+0x6a82fb0)
    #57 SyncTest::SetUp() chrome/browser/sync/test/integration/sync_test.cc:274:25 (sync_integration_tests+0x6a68676)
    #58 HandleExceptionsInMethodIfSupported<testing::Test, void> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x35133a2)
    #59 testing::Test::Run() third_party/googletest/src/googletest/src/gtest.cc:2517 (sync_integration_tests+0x35133a2)
    #60 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2703:11 (sync_integration_tests+0x3514628)
    #61 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2825:28 (sync_integration_tests+0x3514f56)
    #62 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:5227:43 (sync_integration_tests+0x3525ef6)
    #63 HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x35257d8)
    #64 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc:4835 (sync_integration_tests+0x35257d8)
    #65 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2369:46 (sync_integration_tests+0x6c49ee5)
    #66 base::TestSuite::Run() base/test/test_suite.cc:294 (sync_integration_tests+0x6c49ee5)
    #67 ChromeTestSuiteRunner::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:71:21 (sync_integration_tests+0x6a81e20)
    #68 ChromeTestLauncherDelegate::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:80:19 (sync_integration_tests+0x6a81f2f)
    #69 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) content/public/test/test_launcher.cc:647:31 (sync_integration_tests+0xe21f984)
    #70 LaunchChromeTests(unsigned long, content::TestLauncherDelegate*, int, char**) chrome/test/base/chrome_test_launcher.cc:184:10 (sync_integration_tests+0x6a8247a)
    #71 main chrome/test/base/browser_tests_main.cc:36:10 (sync_integration_tests+0x6a3198c)

SUMMARY: ThreadSanitizer: data race base/feature_list.cc:284:27 in base::FeatureList::ClearInstanceForTesting()
 

Comment 1 by thakis@chromium.org, Dec 14

Cc: davidovic@google.com

Comment 2 by jkrcal@chromium.org, Dec 14

Status: Assigned (was: Untriaged)

Comment 3 by treib@chromium.org, Dec 14

Looks like there's a race wrt the global FeatureList instance: It gets destroyed on the main thread (via a ScopedFeatureList in the test body going out of scope), but then the Sync thread still accesses it.
A fix could be to fully shut down Sync before leaving the test body, or maybe it's enough to flush the Sync thread? Or, alternatively, not instantiate ScopedFeatureLists in the test body, since that seems to be a bad pattern.

Comment 4 by thakis@chromium.org, Dec 14

(Note that the tsan trybot won't run the suite until https://chromium-review.googlesource.com/c/chromium/src/+/1377327/ lands hopefully soon, so if you want to send try jobs for possible fixes you have to wait for that to land first.)

Comment 5 by thakis@chromium.org, Dec 14

Summary: TSan reports race in sync_integration_tests TwoClientCustomPassphraseSyncTest.ClientsCanSyncDataWhenScryptEncryptionEnabledInOne , EnableDisableSingleClientTest.DoesNotRedownloadAfterKeepDataWithStandaloneTransport , SingleClientDirectorySyncTest.StopThenDisableDeletesDirectory (was: TSan reports race in sync_integration_tests TwoClientCustomPassphraseSyncTest.ClientsCanSyncDataWhenScryptEncryptionEnabledInOne , EnableDisableSingleClientTest.DoesNotRedownloadAfterKeepDataWithStandaloneTransport)
One more: https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8927158110357415696/+/steps/sync_integration_tests__with_patch_/0/logs/SingleClientDirectorySyncTest.StopThenDisableDeletesDirectory/0


[ RUN      ] SingleClientDirectorySyncTest.StopThenDisableDeletesDirectory
[3624:3624:1214/062601.984713:11688593962:WARNING:loopback_server.cc(719)] Loopback sync persistent state file does not exist.
Xlib:  extension "RANDR" missing on display ":99".
[3624:3624:1214/062604.887154:ERROR:browser_dm_token_storage_linux.cc(101)] Error: /etc/machine-id contains 0 characters (32 were expected).
[3624:3692:1214/062605.692834:ERROR:bus.cc(396)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3624:3624:1214/062605.848798:WARNING:password_store_factory.cc(261)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options.

(sync_integration_tests:3624): LIBDBUSMENU-GLIB-WARNING **: Unable to get session bus: Unknown or unsupported transport 'disabled' for address 'disabled:'
[3624:3624:1214/062607.905189:WARNING:gaia_auth_fetcher.cc(881)] Could not reach Google Accounts servers: errno -11
[3624:3624:1214/062608.907855:WARNING:password_store_factory.cc(261)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options.
[3624:3624:1214/062610.034072:WARNING:password_store_factory.cc(261)] Using basic (unencrypted) store for password storage. See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md for more information about password storage options.
[3624:3859:1214/062610.853210:WARNING:sync_encryption_handler_impl.cc(1080)] Nigori had empty encryption keybag.
[3624:3624:1214/062610.896602:ERROR:account_tracker.cc(263)] OnOAuthError
[3624:3624:1214/062610.896757:WARNING:account_tracker.cc(189)] Failed to get UserInfo for gaia_id_for_user_gmail.com
[3624:3859:1214/062610.935961:WARNING:sync_encryption_handler_impl.cc(1080)] Nigori had empty encryption keybag.
[3624:3624:1214/062611.282845:INFO:profile_sync_service.cc(2041)] ConfigureDataTypeManager not invoked because datatypes cannot be configured now
[3624:3624:1214/062611.290713:INFO:profile_sync_service.cc(2041)] ConfigureDataTypeManager not invoked because datatypes cannot be configured now
==================
WARNING: ThreadSanitizer: data race (pid=3624)
  Read of size 8 at 0x5652c342f660 by thread T7:
    #0 base::FeatureList::IsEnabled(base::Feature const&) base/feature_list.cc:200:8 (sync_integration_tests+0x86074fd)
    #1 IsDynamicExpectCTEnabled net/http/transport_security_state.cc:78:10 (sync_integration_tests+0x9e27f43)
    #2 net::TransportSecurityState::CheckCTRequirements(net::HostPortPair const&, bool, std::__1::vector<net::HashValue, std::__1::allocator<net::HashValue> > const&, net::X509Certificate const*, net::X509Certificate const*, std::__1::vector<net::SignedCertificateTimestampAndStatus, std::__1::allocator<net::SignedCertificateTimestampAndStatus> > const&, net::TransportSecurityState::ExpectCTReportStatus, net::ct::CTPolicyCompliance) net/http/transport_security_state.cc:501 (sync_integration_tests+0x9e27f43)
    #3 net::SSLClientSocketImpl::VerifyCT() net/socket/ssl_client_socket_impl.cc:1481:34 (sync_integration_tests+0x9e38c78)
    #4 net::SSLClientSocketImpl::DoVerifyCertComplete(int) net/socket/ssl_client_socket_impl.cc:1089:21 (sync_integration_tests+0x9e37c29)
    #5 net::SSLClientSocketImpl::DoHandshakeLoop(int) net/socket/ssl_client_socket_impl.cc:1255:14 (sync_integration_tests+0x9e34109)
    #6 net::SSLClientSocketImpl::OnHandshakeIOComplete(int) net/socket/ssl_client_socket_impl.cc:1220:12 (sync_integration_tests+0x9e37998)
    #7 Invoke<void (net::SSLClientSocketImpl::*)(int), net::SSLClientSocketImpl *, int> base/bind_internal.h:516:12 (sync_integration_tests+0x9e3aeaf)
    #8 MakeItSo<void (net::SSLClientSocketImpl::*const &)(int), net::SSLClientSocketImpl *, int> base/bind_internal.h:616 (sync_integration_tests+0x9e3aeaf)
    #9 RunImpl<void (net::SSLClientSocketImpl::*const &)(int), const std::__1::tuple<base::internal::UnretainedWrapper<net::SSLClientSocketImpl> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0x9e3aeaf)
    #10 base::internal::Invoker<base::internal::BindState<void (net::SSLClientSocketImpl::*)(int), base::internal::UnretainedWrapper<net::SSLClientSocketImpl> >, void (int)>::Run(base::internal::BindStateBase*, int) base/bind_internal.h:671 (sync_integration_tests+0x9e3aeaf)
    #11 Run base/callback.h:99:12 (sync_integration_tests+0x9c3599d)
    #12 net::CachingCertVerifier::OnRequestFinished(unsigned int, net::CertVerifier::RequestParams const&, base::Time, base::OnceCallback<void (int)>, net::CertVerifyResult*, int) net/cert/caching_cert_verifier.cc:130 (sync_integration_tests+0x9c3599d)
    #13 Invoke<void (net::CachingCertVerifier::*)(unsigned int, const net::CertVerifier::RequestParams &, base::Time, base::OnceCallback<void (int)>, net::CertVerifyResult *, int), net::CachingCertVerifier *, unsigned int, net::CertVerifier::RequestParams, base::Time, base::OnceCallback<void (int)>, net::CertVerifyResult *, int> base/bind_internal.h:516:12 (sync_integration_tests+0x9c36180)
    #14 MakeItSo<void (net::CachingCertVerifier::*)(unsigned int, const net::CertVerifier::RequestParams &, base::Time, base::OnceCallback<void (int)>, net::CertVerifyResult *, int), net::CachingCertVerifier *, unsigned int, net::CertVerifier::RequestParams, base::Time, base::OnceCallback<void (int)>, net::CertVerifyResult *, int> base/bind_internal.h:616 (sync_integration_tests+0x9c36180)
    #15 RunImpl<void (net::CachingCertVerifier::*)(unsigned int, const net::CertVerifier::RequestParams &, base::Time, base::OnceCallback<void (int)>, net::CertVerifyResult *, int), std::__1::tuple<base::internal::UnretainedWrapper<net::CachingCertVerifier>, unsigned int, net::CertVerifier::RequestParams, base::Time, base::OnceCallback<void (int)>, net::CertVerifyResult *>, 0, 1, 2, 3, 4, 5> base/bind_internal.h:689 (sync_integration_tests+0x9c36180)
    #16 base::internal::Invoker<base::internal::BindState<void (net::CachingCertVerifier::*)(unsigned int, net::CertVerifier::RequestParams const&, base::Time, base::OnceCallback<void (int)>, net::CertVerifyResult*, int), base::internal::UnretainedWrapper<net::CachingCertVerifier>, unsigned int, net::CertVerifier::RequestParams, base::Time, base::OnceCallback<void (int)>, net::CertVerifyResult*>, void (int)>::RunOnce(base::internal::BindStateBase*, int) base/bind_internal.h:658 (sync_integration_tests+0x9c36180)
    #17 Run base/callback.h:99:12 (sync_integration_tests+0x9c5ae88)
    #18 Post net/cert/multi_threaded_cert_verifier.cc:178 (sync_integration_tests+0x9c5ae88)
    #19 net::CertVerifierJob::OnJobCompleted(unsigned int, std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >) net/cert/multi_threaded_cert_verifier.cc:334 (sync_integration_tests+0x9c5ae88)
    #20 Invoke<void (net::CertVerifierJob::*)(unsigned int, std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >), base::WeakPtr<net::CertVerifierJob>, unsigned int, std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > base/bind_internal.h:516:12 (sync_integration_tests+0x9c5ba31)
    #21 MakeItSo<void (net::CertVerifierJob::*)(unsigned int, std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >), base::WeakPtr<net::CertVerifierJob>, unsigned int, std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > base/bind_internal.h:636 (sync_integration_tests+0x9c5ba31)
    #22 RunImpl<void (net::CertVerifierJob::*)(unsigned int, std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >), std::__1::tuple<base::WeakPtr<net::CertVerifierJob>, unsigned int>, 0, 1> base/bind_internal.h:689 (sync_integration_tests+0x9c5ba31)
    #23 base::internal::Invoker<base::internal::BindState<void (net::CertVerifierJob::*)(unsigned int, std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >), base::WeakPtr<net::CertVerifierJob>, unsigned int>, void (std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >)>::RunOnce(base::internal::BindStateBase*, std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >&&) base/bind_internal.h:658 (sync_integration_tests+0x9c5ba31)
    #24 Run base/callback.h:99:12 (sync_integration_tests+0x9c5b21a)
    #25 void base::internal::ReplyAdapter<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >, std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > >(base::OnceCallback<void (std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >)>, std::__1::unique_ptr<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >, std::__1::default_delete<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > >*) base/post_task_and_reply_with_result_internal.h:30 (sync_integration_tests+0x9c5b21a)
    #26 Invoke<void (*)(base::OnceCallback<void (std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >)>, std::__1::unique_ptr<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >, std::__1::default_delete<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > > *), base::OnceCallback<void (std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >)>, std::__1::unique_ptr<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >, std::__1::default_delete<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > > *> base/bind_internal.h:416:12 (sync_integration_tests+0x9c5b3a8)
    #27 MakeItSo<void (*)(base::OnceCallback<void (std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >)>, std::__1::unique_ptr<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >, std::__1::default_delete<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > > *), base::OnceCallback<void (std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >)>, std::__1::unique_ptr<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >, std::__1::default_delete<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > > *> base/bind_internal.h:616 (sync_integration_tests+0x9c5b3a8)
    #28 RunImpl<void (*)(base::OnceCallback<void (std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >)>, std::__1::unique_ptr<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >, std::__1::default_delete<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > > *), std::__1::tuple<base::OnceCallback<void (std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >)>, base::internal::OwnedWrapper<std::__1::unique_ptr<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >, std::__1::default_delete<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > > > >, 0, 1> base/bind_internal.h:689 (sync_integration_tests+0x9c5b3a8)
    #29 base::internal::Invoker<base::internal::BindState<void (*)(base::OnceCallback<void (std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >)>, std::__1::unique_ptr<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >, std::__1::default_delete<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > >*), base::OnceCallback<void (std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >)>, base::internal::OwnedWrapper<std::__1::unique_ptr<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> >, std::__1::default_delete<std::__1::unique_ptr<net::(anonymous namespace)::ResultHelper, std::__1::default_delete<net::(anonymous namespace)::ResultHelper> > > > > >, void ()>::RunOnce(base::internal::BindStateBase*) base/bind_internal.h:658 (sync_integration_tests+0x9c5b3a8)
    #30 Run base/callback.h:99:12 (sync_integration_tests+0x870d467)
    #31 base::(anonymous namespace)::PostTaskAndReplyRelay::RunReply(base::(anonymous namespace)::PostTaskAndReplyRelay) base/threading/post_task_and_reply_impl.cc:97 (sync_integration_tests+0x870d467)
    #32 Invoke<void (*)(base::(anonymous namespace)::PostTaskAndReplyRelay), base::(anonymous namespace)::PostTaskAndReplyRelay> base/bind_internal.h:416:12 (sync_integration_tests+0x870d561)
    #33 MakeItSo<void (*)(base::(anonymous namespace)::PostTaskAndReplyRelay), base::(anonymous namespace)::PostTaskAndReplyRelay> base/bind_internal.h:616 (sync_integration_tests+0x870d561)
    #34 RunImpl<void (*)(base::(anonymous namespace)::PostTaskAndReplyRelay), std::__1::tuple<base::(anonymous namespace)::PostTaskAndReplyRelay>, 0> base/bind_internal.h:689 (sync_integration_tests+0x870d561)
    #35 base::internal::Invoker<base::internal::BindState<void (*)(base::(anonymous namespace)::PostTaskAndReplyRelay), base::(anonymous namespace)::PostTaskAndReplyRelay>, void ()>::RunOnce(base::internal::BindStateBase*) base/bind_internal.h:658 (sync_integration_tests+0x870d561)
    #36 Run base/callback.h:99:12 (sync_integration_tests+0x863f0fd)
    #37 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:99 (sync_integration_tests+0x863f0fd)
    #38 base::MessageLoopImpl::RunTask(base::PendingTask*) base/message_loop/message_loop_impl.cc:374:46 (sync_integration_tests+0x863d265)
    #39 DeferOrRunPendingTask base/message_loop/message_loop_impl.cc:385:5 (sync_integration_tests+0x863dbab)
    #40 base::MessageLoopImpl::DoWork() base/message_loop/message_loop_impl.cc:473 (sync_integration_tests+0x863dbab)
    #41 non-virtual thunk to base::MessageLoopImpl::DoWork() base/message_loop/message_loop_impl.cc (sync_integration_tests+0x863dbed)
    #42 base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_libevent.cc:210:31 (sync_integration_tests+0x8788664)
    #43 base::MessageLoopImpl::Run(bool) base/message_loop/message_loop_impl.cc:326:12 (sync_integration_tests+0x863cb18)
    #44 non-virtual thunk to base::MessageLoopImpl::Run(bool) base/message_loop/message_loop_impl.cc (sync_integration_tests+0x863cc14)
    #45 base::RunLoop::Run() base/run_loop.cc:102:14 (sync_integration_tests+0x8685e4f)
    #46 base::Thread::Run(base::RunLoop*) base/threading/thread.cc:250:13 (sync_integration_tests+0x871214b)
    #47 content::BrowserProcessSubThread::IOThreadRun(base::RunLoop*) content/browser/browser_process_sub_thread.cc:174:11 (sync_integration_tests+0x52ab016)
    #48 content::BrowserProcessSubThread::Run(base::RunLoop*) content/browser/browser_process_sub_thread.cc:126:7 (sync_integration_tests+0x52aaf23)
    #49 base::Thread::ThreadMain() base/threading/thread.cc:332:3 (sync_integration_tests+0x87125ec)
    #50 base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:81:13 (sync_integration_tests+0x877fcf1)

  Previous write of size 8 at 0x5652c342f660 by main thread:
    #0 base::FeatureList::ClearInstanceForTesting() base/feature_list.cc:284:27 (sync_integration_tests+0x8608293)
    #1 base::test::ScopedFeatureList::~ScopedFeatureList() base/test/scoped_feature_list.cc:98:3 (sync_integration_tests+0x85e15f5)
    #2 (anonymous namespace)::SingleClientDirectorySyncTest_StopThenDisableDeletesDirectory_Test::RunTestOnMainThread() chrome/browser/sync/test/integration/single_client_directory_sync_test.cc:105:1 (sync_integration_tests+0x38322c8)
    #3 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() content/public/test/browser_test_base.cc:447:5 (sync_integration_tests+0x115effd4)
    #4 Invoke<void (content::BrowserTestBase::*)(), content::BrowserTestBase *> base/bind_internal.h:516:12 (sync_integration_tests+0x115f0e88)
    #5 MakeItSo<void (content::BrowserTestBase::*const &)(), content::BrowserTestBase *> base/bind_internal.h:616 (sync_integration_tests+0x115f0e88)
    #6 RunImpl<void (content::BrowserTestBase::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserTestBase> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0x115f0e88)
    #7 base::internal::Invoker<base::internal::BindState<void (content::BrowserTestBase::*)(), base::internal::UnretainedWrapper<content::BrowserTestBase> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0x115f0e88)
    #8 Run base/callback.h:129:12 (sync_integration_tests+0x8be528b)
    #9 ChromeBrowserMainParts::PreMainMessageLoopRunImpl() chrome/browser/chrome_browser_main.cc:1787 (sync_integration_tests+0x8be528b)
    #10 ChromeBrowserMainParts::PreMainMessageLoopRun() chrome/browser/chrome_browser_main.cc:1175:18 (sync_integration_tests+0x8be3957)
    #11 content::BrowserMainLoop::PreMainMessageLoopRun() content/browser/browser_main_loop.cc:983:13 (sync_integration_tests+0x529b795)
    #12 Invoke<int (content::BrowserMainLoop::*)(), content::BrowserMainLoop *> base/bind_internal.h:516:12 (sync_integration_tests+0x529e708)
    #13 MakeItSo<int (content::BrowserMainLoop::*const &)(), content::BrowserMainLoop *> base/bind_internal.h:616 (sync_integration_tests+0x529e708)
    #14 RunImpl<int (content::BrowserMainLoop::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserMainLoop> > &, 0> base/bind_internal.h:689 (sync_integration_tests+0x529e708)
    #15 base::internal::Invoker<base::internal::BindState<int (content::BrowserMainLoop::*)(), base::internal::UnretainedWrapper<content::BrowserMainLoop> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:671 (sync_integration_tests+0x529e708)
    #16 Run base/callback.h:129:12 (sync_integration_tests+0x5b1945a)
    #17 content::StartupTaskRunner::RunAllTasksNow() content/browser/startup_task_runner.cc:41 (sync_integration_tests+0x5b1945a)
    #18 content::BrowserMainLoop::CreateStartupTasks() content/browser/browser_main_loop.cc:917:25 (sync_integration_tests+0x5299ed6)
    #19 content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner_impl.cc:144:15 (sync_integration_tests+0x529f078)
    #20 content::BrowserMain(content::MainFunctionParams const&) content/browser/browser_main.cc:43:32 (sync_integration_tests+0x529720c)
    #21 RunBrowserProcessMain content/app/content_main_runner_impl.cc:545:10 (sync_integration_tests+0x7fb223e)
    #22 content::ContentMainRunnerImpl::RunServiceManager(content::MainFunctionParams&, bool) content/app/content_main_runner_impl.cc:954 (sync_integration_tests+0x7fb223e)
    #23 content::ContentMainRunnerImpl::Run(bool) content/app/content_main_runner_impl.cc:868:12 (sync_integration_tests+0x7fb1bcf)
    #24 content::ContentServiceManagerMainDelegate::RunEmbedderProcess() content/app/content_service_manager_main_delegate.cc:53:32 (sync_integration_tests+0x7fae52f)
    #25 service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:460:29 (sync_integration_tests+0xb9063a1)
    #26 content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10 (sync_integration_tests+0x7faf7fb)
    #27 content::BrowserTestBase::SetUp() content/public/test/browser_test_base.cc:349:3 (sync_integration_tests+0x115efa8a)
    #28 InProcessBrowserTest::SetUp() chrome/test/base/in_process_browser_test.cc:284:20 (sync_integration_tests+0x83da804)
    #29 SyncTest::SetUp() chrome/browser/sync/test/integration/sync_test.cc:274:25 (sync_integration_tests+0x83bd4d9)
    #30 HandleExceptionsInMethodIfSupported<testing::Test, void> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x3b78ca2)
    #31 testing::Test::Run() third_party/googletest/src/googletest/src/gtest.cc:2517 (sync_integration_tests+0x3b78ca2)
    #32 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2703:11 (sync_integration_tests+0x3b79f28)
    #33 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2825:28 (sync_integration_tests+0x3b7a7b6)
    #34 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:5227:43 (sync_integration_tests+0x3b8bfd6)
    #35 HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x3b8b8ba)
    #36 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc:4835 (sync_integration_tests+0x3b8b8ba)
    #37 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2369:46 (sync_integration_tests+0x85e3165)
    #38 base::TestSuite::Run() base/test/test_suite.cc:294 (sync_integration_tests+0x85e3165)
    #39 ChromeTestSuiteRunner::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:71:21 (sync_integration_tests+0x83d9600)
    #40 ChromeTestLauncherDelegate::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:80:19 (sync_integration_tests+0x83d970f)
    #41 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) content/public/test/test_launcher.cc:647:31 (sync_integration_tests+0x115f904e)
    #42 LaunchChromeTests(unsigned long, content::TestLauncherDelegate*, int, char**) chrome/test/base/chrome_test_launcher.cc:184:10 (sync_integration_tests+0x83d9c79)
    #43 main chrome/test/base/browser_tests_main.cc:36:10 (sync_integration_tests+0x837eebc)

  Location is global 'base::(anonymous namespace)::g_feature_list_instance' of size 8 at 0x5652c342f660 (sync_integration_tests+0x00001286f660)

  Thread T7 'Chrome_IOThread' (tid=3636, running) created by main thread at:
    #0 pthread_create /b/swarming/w/ir/kitchen-workdir/src/third_party/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:968:3 (sync_integration_tests+0x37948b5)
    #1 base::(anonymous namespace)::CreateThread(unsigned long, bool, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:120:13 (sync_integration_tests+0x877f5d6)
    #2 base::PlatformThread::CreateWithPriority(unsigned long, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:238:10 (sync_integration_tests+0x877f495)
    #3 base::Thread::StartWithOptions(base::Thread::Options const&) base/threading/thread.cc:112:15 (sync_integration_tests+0x8711855)
    #4 content::BrowserProcessSubThread::CreateIOThread() content/browser/browser_process_sub_thread.cc:90:19 (sync_integration_tests+0x52aac98)
    #5 content::ContentMainRunnerImpl::RunServiceManager(content::MainFunctionParams&, bool) content/app/content_main_runner_impl.cc:934:31 (sync_integration_tests+0x7fb1f64)
    #6 content::ContentMainRunnerImpl::Run(bool) content/app/content_main_runner_impl.cc:868:12 (sync_integration_tests+0x7fb1bcf)
    #7 content::ContentServiceManagerMainDelegate::RunEmbedderProcess() content/app/content_service_manager_main_delegate.cc:53:32 (sync_integration_tests+0x7fae52f)
    #8 service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:460:29 (sync_integration_tests+0xb9063a1)
    #9 content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10 (sync_integration_tests+0x7faf7fb)
    #10 content::BrowserTestBase::SetUp() content/public/test/browser_test_base.cc:349:3 (sync_integration_tests+0x115efa8a)
    #11 InProcessBrowserTest::SetUp() chrome/test/base/in_process_browser_test.cc:284:20 (sync_integration_tests+0x83da804)
    #12 SyncTest::SetUp() chrome/browser/sync/test/integration/sync_test.cc:274:25 (sync_integration_tests+0x83bd4d9)
    #13 HandleExceptionsInMethodIfSupported<testing::Test, void> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x3b78ca2)
    #14 testing::Test::Run() third_party/googletest/src/googletest/src/gtest.cc:2517 (sync_integration_tests+0x3b78ca2)
    #15 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2703:11 (sync_integration_tests+0x3b79f28)
    #16 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2825:28 (sync_integration_tests+0x3b7a7b6)
    #17 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:5227:43 (sync_integration_tests+0x3b8bfd6)
    #18 HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> third_party/googletest/src/googletest/src/gtest.cc (sync_integration_tests+0x3b8b8ba)
    #19 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc:4835 (sync_integration_tests+0x3b8b8ba)
    #20 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2369:46 (sync_integration_tests+0x85e3165)
    #21 base::TestSuite::Run() base/test/test_suite.cc:294 (sync_integration_tests+0x85e3165)
    #22 ChromeTestSuiteRunner::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:71:21 (sync_integration_tests+0x83d9600)
    #23 ChromeTestLauncherDelegate::RunTestSuite(int, char**) chrome/test/base/chrome_test_launcher.cc:80:19 (sync_integration_tests+0x83d970f)
    #24 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) content/public/test/test_launcher.cc:647:31 (sync_integration_tests+0x115f904e)
    #25 LaunchChromeTests(unsigned long, content::TestLauncherDelegate*, int, char**) chrome/test/base/chrome_test_launcher.cc:184:10 (sync_integration_tests+0x83d9c79)
    #26 main chrome/test/base/browser_tests_main.cc:36:10 (sync_integration_tests+0x837eebc)

SUMMARY: ThreadSanitizer: data race base/feature_list.cc:200:8 in base::FeatureList::IsEnabled(base::Feature const&)



Similar to first two.

Comment 6 by bugdroid1@chromium.org, Dec 14

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8fbc2838d0dc12de17f79bb2a760ad859fc41a76

commit 8fbc2838d0dc12de17f79bb2a760ad859fc41a76
Author: Nico Weber <thakis@chromium.org>
Date: Fri Dec 14 16:00:57 2018

Disable the three sync_integration_tests that fail under tsan and run suite on tsan bot.

Looks like all the protobuf issues went away, maybe due to #612796.

Only some tests still fail:
- TwoClientCustomPassphraseSyncTest.ClientsCanSyncDataWhenScryptEncryptionEnabledInOne
- EnableDisableSingleClientTest.DoesNotRedownloadAfterKeepDataWithStandaloneTransport
- SingleClientDirectorySyncTest.StopThenDisableDeletesDirectory

Disable them under tsan and run the suite on the tsan bot.

Bug:  852002 , 915219 ,843511, 913704 
Change-Id: I862a93a4669c2dbd57ded99c9704528201f687b9
Reviewed-on: https://chromium-review.googlesource.com/c/1377327
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Hans Wennborg <hans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616693}
[modify] https://crrev.com/8fbc2838d0dc12de17f79bb2a760ad859fc41a76/chrome/browser/sync/test/integration/enable_disable_test.cc
[modify] https://crrev.com/8fbc2838d0dc12de17f79bb2a760ad859fc41a76/chrome/browser/sync/test/integration/single_client_directory_sync_test.cc
[modify] https://crrev.com/8fbc2838d0dc12de17f79bb2a760ad859fc41a76/chrome/browser/sync/test/integration/two_client_custom_passphrase_sync_test.cc
[modify] https://crrev.com/8fbc2838d0dc12de17f79bb2a760ad859fc41a76/testing/buildbot/chromium.clang.json
[modify] https://crrev.com/8fbc2838d0dc12de17f79bb2a760ad859fc41a76/testing/buildbot/chromium.memory.json
[modify] https://crrev.com/8fbc2838d0dc12de17f79bb2a760ad859fc41a76/testing/buildbot/test_suite_exceptions.pyl

Comment 7 by thakis@chromium.org, Dec 14

SyncTest has a feature_list_ member that's used in one place:

https://cs.chromium.org/chromium/src/chrome/browser/ui/passwords/google_password_manager_navigation_throttle_browsertest.cc?sq=package:chromium&dr=C&g=0&l=70

Maybe all the tests should use that; it looks like it gets destroyed after SyncTest::TearDown() has stopped the sync test (maybe? I don't know the sync code, I'm just looking around.)

Comment 8 by thakis@chromium.org, Dec 14

If so, I think most of these are bad and should use feature_list_ from the superclass instead: https://cs.chromium.org/search/?q=ScopedFeatureList+file:sync/test/integratio&type=cs

Comment 9 by shimazu@chromium.org, Dec 17

Cc: h...@chromium.org treib@chromium.org
 Issue 915383  has been merged into this issue.

Comment 10 by shimazu@chromium.org, Dec 17

Labels: -Pri-3 Sheriff-Chromium Pri-1
(chromium build sheriff)
Let me bump the priority up to P1 until all the tests are disabled on TSan bots or the root cause is fixed due to the frequency of failures.

treib: could you work on it?

Comment 11 by treib@chromium.org, Dec 17

Cc: -davidovic@google.com
Labels: FixitSync
Yes, I can look into this, but I won't get to it this year.

Comment 12 by thakis@chromium.org, Dec 17

Should we add a line to build/sanitizers/tsan_suppressions.cc in the meantime then?

Comment 13 by thestig@chromium.org, Dec 17

Are we thinking about suppressing because there are too many tests that are (potentially) failing here? i.e. avoid the game of whack-a-mole?

Comment 14 by thakis@chromium.org, Dec 17

Yeah, see comment 8 and click through a few recent sync_integration_tests failures on https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Linux%20TSan%20Tests , iirc it's quite a wide range of tests.

Comment 15 by thestig@chromium.org, Dec 17

The latest ones are all TwoClientPasswordsSyncTest. Why don't I go ahead and disable those under TSAN?

Comment 16 by thakis@chromium.org, Dec 17

Please do!

This is in the list in comment 8, it has the bad pattern in setup code shared by all these tests: https://cs.chromium.org/chromium/src/chrome/browser/sync/test/integration/two_client_passwords_sync_test.cc?q=ScopedFeatureList+file:sync/test/integratio&dr=C&l=51

I'd expect that there will be more reports after that, but this is probably the largest chunk.

Comment 18 by bugdroid1@chromium.org, Dec 17

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5685f57c02d856859a72f169b95b854b80090391

commit 5685f57c02d856859a72f169b95b854b80090391
Author: Lei Zhang <thestig@chromium.org>
Date: Mon Dec 17 21:18:15 2018

Disable TwoClientPasswordsSyncTest under TSAN.

The tests are racy.

TBR=treib@chromium.org
BUG= 915219 

Change-Id: Id9805066e3a212a6afb069684980f2e774f3d94e
Reviewed-on: https://chromium-review.googlesource.com/c/1380961
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#617230}
[modify] https://crrev.com/5685f57c02d856859a72f169b95b854b80090391/chrome/browser/sync/test/integration/two_client_passwords_sync_test.cc

Comment 19 by thestig@chromium.org, Dec 17

I'll keep an eye on https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Linux%20TSan%20Tests and see how it behaves before taking this out of the sheriff queue.

Comment 20 by thestig@chromium.org, Dec 18

Labels: -Sheriff-Chromium
9 green runs in a row now since r617230 landed. Taking this out of the sheriff queue.

Comment 21 by mamir@chromium.org, Jan 7

treib@ should we mark this as fixed?

Comment 22 by treib@chromium.org, Jan 8

No, nothing has been fixed, the tests were simply disabled. I'll work on a proper fix now.

Comment 23 by treib@chromium.org, Jan 8

Labels: -Pri-1 Pri-3
...though since it's not blocking anyone anymore, and (IIUC) it's just a problem with test setup rather than with real code, let's reduce prio.

Comment 24 by treib@chromium.org, Jan 8

Status: Started (was: Assigned)

Comment 25 by bugdroid1@chromium.org, Jan 8

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/97a2b0fa5c8120624314a09e0c7321acf5491663

commit 97a2b0fa5c8120624314a09e0c7321acf5491663
Author: Marc Treib <treib@chromium.org>
Date: Tue Jan 08 10:54:56 2019

Fix and reenable one EnableDisableSingleClientTest on TSan

The test was disabled due to a data race related to the global
FeatureList instance. The problem was that the test body instantiated a
ScopedFeatureList, which overrides the global instance. That gets reset
after the test body; however, the feature value might still be queried
from the Sync thread after that.
The fix is to not create a ScopedFeatureList in the test body, and
instead put it into the test fixture. This way, its lifetime is long
enough to avoid the race.

Note: Many other sync_integration_tests have similar races. If this is
confirmed to fix it, I'll apply the same pattern everywhere else too.

Bug:  915219 
Change-Id: I40709ef8edf5f46720504d47744f1d5bd40ce711
Reviewed-on: https://chromium-review.googlesource.com/c/1400585
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#620675}
[modify] https://crrev.com/97a2b0fa5c8120624314a09e0c7321acf5491663/chrome/browser/sync/test/integration/enable_disable_test.cc

Comment 27 by bugdroid1@chromium.org, Jan 8

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b80701cd410d43d4f513f499e51d3ac248739cd7

commit b80701cd410d43d4f513f499e51d3ac248739cd7
Author: Marc Treib <treib@chromium.org>
Date: Tue Jan 08 17:16:59 2019

Fix SingleClientDirectorySyncTest on TSan

The test was disabled due to a data race related to the global
FeatureList instance. The problem was that the test body instantiated a
ScopedFeatureList, which overrides the global instance. That gets reset
after the test body; however, the feature list might still be queried
from the Sync thread after that.

In this case, it turned out that setting the feature is simply not
required for the test; it passes both with and without the feature.

Bug:  915219 , 856179
Change-Id: If02b4aa3d3fbd7091038bf47cf8745a95ed8cbc1
Reviewed-on: https://chromium-review.googlesource.com/c/1401043
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#620769}
[modify] https://crrev.com/b80701cd410d43d4f513f499e51d3ac248739cd7/chrome/browser/sync/test/integration/single_client_directory_sync_test.cc

Comment 28 by bugdroid1@chromium.org, Jan 9

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d0b30b2fe3396d4ca76e348f0a39ea74a8ad2b98

commit d0b30b2fe3396d4ca76e348f0a39ea74a8ad2b98
Author: Marc Treib <treib@chromium.org>
Date: Wed Jan 09 14:00:37 2019

sync_integration_tests: don't instantiate ScopedFeatureList in test body

Creating a ScopedFeatureList instance in the test body creates a data
race related to the global FeatureList instance: The ScopedFeatureList
overrides the global instance, and then it gets reset after the test
body; however, the feature list might still be queried from the Sync
thread after that.

This CL avoids the issue by instead creating test (sub)classes to hold
the ScopedFeatureLists.

Bug:  915219 
Change-Id: Ib1e0d87ed4ecc5ef33e9601ba84efecd399fb003
Reviewed-on: https://chromium-review.googlesource.com/c/1402799
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621134}
[modify] https://crrev.com/d0b30b2fe3396d4ca76e348f0a39ea74a8ad2b98/chrome/browser/sync/test/integration/single_client_secondary_account_sync_test.cc
[modify] https://crrev.com/d0b30b2fe3396d4ca76e348f0a39ea74a8ad2b98/chrome/browser/sync/test/integration/single_client_sessions_sync_test.cc
[modify] https://crrev.com/d0b30b2fe3396d4ca76e348f0a39ea74a8ad2b98/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc
[modify] https://crrev.com/d0b30b2fe3396d4ca76e348f0a39ea74a8ad2b98/chrome/browser/sync/test/integration/single_client_user_consents_sync_test.cc
[modify] https://crrev.com/d0b30b2fe3396d4ca76e348f0a39ea74a8ad2b98/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc

Comment 29 by bugdroid1@chromium.org, Jan 9

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1b046c87b8bf8cee36873b9ccb917a5195fbe92e

commit 1b046c87b8bf8cee36873b9ccb917a5195fbe92e
Author: Findit <findit-for-me@appspot.gserviceaccount.com>
Date: Wed Jan 09 15:23:22 2019

Revert "sync_integration_tests: don't instantiate ScopedFeatureList in test body"

This reverts commit d0b30b2fe3396d4ca76e348f0a39ea74a8ad2b98.

Reason for revert:

Findit (https://goo.gl/kROfz5) identified CL at revision 621134 as the
culprit for flakes in the build cycles as shown on:
https://findit-for-me.appspot.com/waterfall/flake/flake-culprit?key=ag9zfmZpbmRpdC1mb3ItbWVyQwsSDEZsYWtlQ3VscHJpdCIxY2hyb21pdW0vZDBiMzBiMmZlMzM5NmQ0Y2E3NmUzNDhmMGEzOWVhNzRhOGFkMmI5OAw

Sample Failed Build: https://ci.chromium.org/buildbot/chromium.memory/Linux%20TSan%20Tests/32338

Sample Failed Step: sync_integration_tests

Sample Flaky Test: SingleClientWalletWithAccountStorageSyncTest.DownloadAccountStorage_Card

Original change's description:
> sync_integration_tests: don't instantiate ScopedFeatureList in test body
> 
> Creating a ScopedFeatureList instance in the test body creates a data
> race related to the global FeatureList instance: The ScopedFeatureList
> overrides the global instance, and then it gets reset after the test
> body; however, the feature list might still be queried from the Sync
> thread after that.
> 
> This CL avoids the issue by instead creating test (sub)classes to hold
> the ScopedFeatureLists.
> 
> Bug:  915219 
> Change-Id: Ib1e0d87ed4ecc5ef33e9601ba84efecd399fb003
> Reviewed-on: https://chromium-review.googlesource.com/c/1402799
> Reviewed-by: Mikel Astiz <mastiz@chromium.org>
> Commit-Queue: Marc Treib <treib@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#621134}

Change-Id: Ic97b93a8c18d4db22ed92aaabb33074a0862c3ef
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  915219 ,  920216 
Reviewed-on: https://chromium-review.googlesource.com/c/1403080
Cr-Commit-Position: refs/heads/master@{#621146}
[modify] https://crrev.com/1b046c87b8bf8cee36873b9ccb917a5195fbe92e/chrome/browser/sync/test/integration/single_client_secondary_account_sync_test.cc
[modify] https://crrev.com/1b046c87b8bf8cee36873b9ccb917a5195fbe92e/chrome/browser/sync/test/integration/single_client_sessions_sync_test.cc
[modify] https://crrev.com/1b046c87b8bf8cee36873b9ccb917a5195fbe92e/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc
[modify] https://crrev.com/1b046c87b8bf8cee36873b9ccb917a5195fbe92e/chrome/browser/sync/test/integration/single_client_user_consents_sync_test.cc
[modify] https://crrev.com/1b046c87b8bf8cee36873b9ccb917a5195fbe92e/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc

Comment 30 by bugdroid1@chromium.org, Jan 10

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a0f3d164c7bb26b7677cddc30b2e1f740d68542d

commit a0f3d164c7bb26b7677cddc30b2e1f740d68542d
Author: Marc Treib <treib@chromium.org>
Date: Thu Jan 10 09:43:59 2019

Reland: sync_integration_tests: don't instantiate ScopedFeatureList in test body

This is a reland of https://crrev.com/c/1402799. The original CL was
reverted for supposedly introducing flakiness, but in fact in only
renamed an already-flaky test. That test has since been disabled, so
trying again.

Creating a ScopedFeatureList instance in the test body creates a data
race related to the global FeatureList instance: The ScopedFeatureList
overrides the global instance, and then it gets reset after the test
body; however, the feature list might still be queried from the Sync
thread after that.

This CL avoids the issue by instead creating test (sub)classes to hold
the ScopedFeatureLists.

Bug:  915219 
Change-Id: Iaa6185d0dd9a042a9275100e3b1cae1eceb52633
Reviewed-on: https://chromium-review.googlesource.com/c/1402890
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621523}
[modify] https://crrev.com/a0f3d164c7bb26b7677cddc30b2e1f740d68542d/chrome/browser/sync/test/integration/single_client_secondary_account_sync_test.cc
[modify] https://crrev.com/a0f3d164c7bb26b7677cddc30b2e1f740d68542d/chrome/browser/sync/test/integration/single_client_sessions_sync_test.cc
[modify] https://crrev.com/a0f3d164c7bb26b7677cddc30b2e1f740d68542d/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc
[modify] https://crrev.com/a0f3d164c7bb26b7677cddc30b2e1f740d68542d/chrome/browser/sync/test/integration/single_client_user_consents_sync_test.cc
[modify] https://crrev.com/a0f3d164c7bb26b7677cddc30b2e1f740d68542d/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc

Comment 31 by bugdroid1@chromium.org, Jan 10

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/14dfc0eebaef51c5156fc662a76be399bd336c3b

commit 14dfc0eebaef51c5156fc662a76be399bd336c3b
Author: Findit <findit-for-me@appspot.gserviceaccount.com>
Date: Thu Jan 10 21:03:36 2019

Revert "Reland: sync_integration_tests: don't instantiate ScopedFeatureList in test body"

This reverts commit a0f3d164c7bb26b7677cddc30b2e1f740d68542d.

Reason for revert:

Findit (https://goo.gl/kROfz5) identified CL at revision 621523 as the
culprit for flakes in the build cycles as shown on:
https://findit-for-me.appspot.com/waterfall/flake/flake-culprit?key=ag9zfmZpbmRpdC1mb3ItbWVyQwsSDEZsYWtlQ3VscHJpdCIxY2hyb21pdW0vYTBmM2QxNjRjN2JiMjZiNzY3N2NkZGMzMGIyZTFmNzQwZDY4NTQyZAw

Sample Failed Build: https://ci.chromium.org/buildbot/chromium.memory/Linux%20TSan%20Tests/32409

Sample Failed Step: sync_integration_tests

Sample Flaky Test: SingleClientWalletWithAccountStorageSyncTest.SwitchesBetweenAccountAndProfileStorageOnTogglingSync

Original change's description:
> Reland: sync_integration_tests: don't instantiate ScopedFeatureList in test body
> 
> This is a reland of https://crrev.com/c/1402799. The original CL was
> reverted for supposedly introducing flakiness, but in fact in only
> renamed an already-flaky test. That test has since been disabled, so
> trying again.
> 
> Creating a ScopedFeatureList instance in the test body creates a data
> race related to the global FeatureList instance: The ScopedFeatureList
> overrides the global instance, and then it gets reset after the test
> body; however, the feature list might still be queried from the Sync
> thread after that.
> 
> This CL avoids the issue by instead creating test (sub)classes to hold
> the ScopedFeatureLists.
> 
> Bug:  915219 
> Change-Id: Iaa6185d0dd9a042a9275100e3b1cae1eceb52633
> Reviewed-on: https://chromium-review.googlesource.com/c/1402890
> Reviewed-by: Mikel Astiz <mastiz@chromium.org>
> Commit-Queue: Marc Treib <treib@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#621523}

Change-Id: I3c8804e10fc6fd5c15e540f4b0441926da421634
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  915219 ,  920738 
Reviewed-on: https://chromium-review.googlesource.com/c/1405984
Cr-Commit-Position: refs/heads/master@{#621737}
[modify] https://crrev.com/14dfc0eebaef51c5156fc662a76be399bd336c3b/chrome/browser/sync/test/integration/single_client_secondary_account_sync_test.cc
[modify] https://crrev.com/14dfc0eebaef51c5156fc662a76be399bd336c3b/chrome/browser/sync/test/integration/single_client_sessions_sync_test.cc
[modify] https://crrev.com/14dfc0eebaef51c5156fc662a76be399bd336c3b/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc
[modify] https://crrev.com/14dfc0eebaef51c5156fc662a76be399bd336c3b/chrome/browser/sync/test/integration/single_client_user_consents_sync_test.cc
[modify] https://crrev.com/14dfc0eebaef51c5156fc662a76be399bd336c3b/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc

Comment 32 by bugdroid1@chromium.org, Jan 11

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0f5c69b57657008f67a50bf7fc6a08feaf8f4415

commit 0f5c69b57657008f67a50bf7fc6a08feaf8f4415
Author: Marc Treib <treib@chromium.org>
Date: Fri Jan 11 10:15:33 2019

Fix data races in SingleClientCustomPassphraseSyncTest

Currently these tests are all very flaky on TSan because of a data race
related to the global FeatureList instance. This CL changes the tests
to avoid the problematic pattern (overriding the FeatureList from the
test body).
For one test (CannotDecryptScryptKeyEncryptedDataWhenScryptDisabled),
it's not easy to avoid the bad pattern, so this test is disabled on
TSan.

Bug:  915219 
Change-Id: Ic04db73c6a40b426f52fbf4a170d661c2a1ebe93
Reviewed-on: https://chromium-review.googlesource.com/c/1404084
Commit-Queue: Marc Treib <treib@chromium.org>
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621960}
[modify] https://crrev.com/0f5c69b57657008f67a50bf7fc6a08feaf8f4415/chrome/browser/sync/test/integration/encryption_helper.h
[modify] https://crrev.com/0f5c69b57657008f67a50bf7fc6a08feaf8f4415/chrome/browser/sync/test/integration/single_client_custom_passphrase_sync_test.cc

Comment 33 by bugdroid1@chromium.org, Jan 14

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3617998bf3ec453e01b2183f9dfe9f3286ccaea8

commit 3617998bf3ec453e01b2183f9dfe9f3286ccaea8
Author: Marc Treib <treib@chromium.org>
Date: Mon Jan 14 08:51:11 2019

Reland 2: sync_integration_tests: don't instantiate ScopedFeatureList in test body

This is a reland of https://crrev.com/c/1402799 and
https://crrev.com/c/1402890, which were reverted for supposedly
introducing flakiness, but in fact in only renamed already-flaky tests.
Hopefully all such tests are now disabled, so trying again.

Creating a ScopedFeatureList instance in the test body creates a data
race related to the global FeatureList instance: The ScopedFeatureList
overrides the global instance, and then it gets reset after the test
body; however, the feature list might still be queried from the Sync
thread after that.

This CL avoids the issue by instead creating test (sub)classes to hold
the ScopedFeatureLists.

Bug:  915219 
Change-Id: I193a5174a74fcf89e9dc1593ee5cdb6eae570ad3
Reviewed-on: https://chromium-review.googlesource.com/c/1406999
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#622397}
[modify] https://crrev.com/3617998bf3ec453e01b2183f9dfe9f3286ccaea8/chrome/browser/sync/test/integration/single_client_secondary_account_sync_test.cc
[modify] https://crrev.com/3617998bf3ec453e01b2183f9dfe9f3286ccaea8/chrome/browser/sync/test/integration/single_client_sessions_sync_test.cc
[modify] https://crrev.com/3617998bf3ec453e01b2183f9dfe9f3286ccaea8/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc
[modify] https://crrev.com/3617998bf3ec453e01b2183f9dfe9f3286ccaea8/chrome/browser/sync/test/integration/single_client_user_consents_sync_test.cc
[modify] https://crrev.com/3617998bf3ec453e01b2183f9dfe9f3286ccaea8/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc

Comment 34 by bugdroid1@chromium.org, Jan 15

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7566c93e098f8e57581bd9ae6fe04be1440d08b2

commit 7566c93e098f8e57581bd9ae6fe04be1440d08b2
Author: Jan Krcal <jkrcal@chromium.org>
Date: Tue Jan 15 14:56:49 2019

[TSan flakiness] Init feature lists in the fixture in wallet sync tests

This CL fixes TSan flakiness for wallet sync_integration_tests. TSan
reports a data race if ScopedFeatureList gets initialized in the body
of the test.

Bug:  915219 
Change-Id: Ia3ea05c9aabf49de40281238991cf2c2caa2fb57
Reviewed-on: https://chromium-review.googlesource.com/c/1411914
Commit-Queue: Jan Krcal <jkrcal@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#622855}
[modify] https://crrev.com/7566c93e098f8e57581bd9ae6fe04be1440d08b2/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc
[modify] https://crrev.com/7566c93e098f8e57581bd9ae6fe04be1440d08b2/chrome/browser/sync/test/integration/two_client_wallet_sync_test.cc
[modify] https://crrev.com/7566c93e098f8e57581bd9ae6fe04be1440d08b2/chrome/browser/sync/test/integration/wallet_helper.h

Comment 35 by jkrcal@chromium.org, Jan 16

By now, most of the cases where this data race can be easily avoided are fixed.

There are some complicated cases in sync_integration_tests where overriding g_feature_list after it has been already used is needed (notably tests simulating two clients by having two profiles open where we want different features being enabled for each of the client).

Coming back to #12: 
Is it better 
 - to keep these tests long-term disabled for TSan or
 - to ignore this data race by adding a line to build/sanitizers/tsan_suppressions.cc?

Any opinions?

Comment 36 by bugdroid1@chromium.org, Jan 16

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/beb2bb688f7780a1810f76c07c834f73a549fa73

commit beb2bb688f7780a1810f76c07c834f73a549fa73
Author: Jan Krcal <jkrcal@chromium.org>
Date: Wed Jan 16 11:23:42 2019

[Custom passphrase] Moving ScopedFeatureList out of the test body

This CL addresses a TSan failure that occurs when the global
g_feature_list_instance is changed after some parts of Chrome has been
initialized (and have accessed the previous g_feature_list_instance via
FeatureList::IsEnabled()). Thus, this CL removed the use of
ScopedFeatureList from the test body (where possible).

Bug:  915219 
Change-Id: I8c442c1c7dcbc7e7086daa41fc4dcc4919e84339
Reviewed-on: https://chromium-review.googlesource.com/c/1411930
Reviewed-by: Marc Treib <treib@chromium.org>
Commit-Queue: Jan Krcal <jkrcal@chromium.org>
Cr-Commit-Position: refs/heads/master@{#623195}
[modify] https://crrev.com/beb2bb688f7780a1810f76c07c834f73a549fa73/chrome/browser/sync/test/integration/two_client_custom_passphrase_sync_test.cc

Comment 37 by thakis@chromium.org, Jan 16

re 35: Best is to restructure the code so that it isn't racy.

Comment 38 by treib@google.com, Jan 21

Status: Fixed (was: Started)
I think this is as fixed as it's going to get. A few tests are still disabled on TSan, the ones that actually need to change features at runtime, usually to have two Sync clients running with different features. There are a few ways to properly fix this, but none of them are very practical IMO:
- Restructure the FeatureList code to not use a global var (or otherwise avoid the data race in some way).
- Restructure the Sync integration test infrastructure to not run multiple clients in the same process.
- For the features in question, build custom plumbing to pass them where they need to be, and thus remove queries to the global FeatureList from the Sync thread.

Since I don't think any of these is going to happen any time soon, I'm going to close this bug.

Sign in to add a comment