TSan reports race in sync_integration_tests TwoClientCustomPassphraseSyncTest.ClientsCanSyncDataWhenScryptEncryptionEnabledInOne , EnableDisableSingleClientTest.DoesNotRedownloadAfterKeepDataWithStandaloneTransport , SingleClientDirectorySyncTest.StopThenDisableDeletesDirectory |
|||||||||
Issue descriptionThe 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()
,
Dec 14
,
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.
,
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.)
,
Dec 14
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.
,
Dec 14
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
,
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.)
,
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
,
Dec 17
,
Dec 17
(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?
,
Dec 17
Yes, I can look into this, but I won't get to it this year.
,
Dec 17
Should we add a line to build/sanitizers/tsan_suppressions.cc in the meantime then?
,
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?
,
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.
,
Dec 17
The latest ones are all TwoClientPasswordsSyncTest. Why don't I go ahead and disable those under TSAN?
,
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.
,
Dec 17
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
,
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.
,
Dec 18
9 green runs in a row now since r617230 landed. Taking this out of the sheriff queue.
,
Jan 7
treib@ should we mark this as fixed?
,
Jan 8
No, nothing has been fixed, the tests were simply disabled. I'll work on a proper fix now.
,
Jan 8
...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.
,
Jan 8
,
Jan 8
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
,
Jan 8
Looking good so far: https://test-results.appspot.com/dashboards/flakiness_dashboard.html#testType=sync_integration_tests&tests=EnableDisableSingleClientWithStandaloneTransportTest Right now there are 13 successful runs on TSan.
,
Jan 8
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
,
Jan 9
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
,
Jan 9
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
,
Jan 10
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
,
Jan 10
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
,
Jan 11
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
,
Jan 14
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
,
Jan 15
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
,
Jan 16
(6 days ago)
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?
,
Jan 16
(6 days ago)
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
,
Jan 16
(6 days ago)
re 35: Best is to restructure the code so that it isn't racy.
,
Yesterday
(42 hours ago)
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 |
|||||||||
Comment 1 by thakis@chromium.org
, Dec 14