New issue
Advanced search Search tips

Issue 859067 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 3
Type: Bug



Sign in to add a comment

ImageWriterWriteFromUrlOperationTest.SelectTargetWithExtension sometimes racy under tsan

Project Member Reported by thakis@chromium.org, Jun 29 2018

Issue description

Got this on an unrelated try job:

https://logs.chromium.org/v/?s=chromium%2Fbuildbucket%2Fcr-buildbucket.appspot.com%2F8942382225970833872%2F%2B%2Fsteps%2Funit_tests__with_patch_%2F0%2Flogs%2FImageWriterWriteFromUrlOperationTest.SelectTargetWithExtension%2F0

[ RUN      ] ImageWriterWriteFromUrlOperationTest.SelectTargetWithExtension
==================
WARNING: ThreadSanitizer: data race (pid=17393)
  Write of size 8 at 0x0000131e4e28 by thread T20:
    #0 net::NetworkChangeNotifier::NetworkChangeNotifier(net::NetworkChangeNotifier::NetworkChangeCalculatorParams const&) net/base/network_change_notifier.cc:673:29 (unit_tests+0x922983c)
    #1 net::NetworkChangeNotifierLinux::NetworkChangeNotifierLinux(std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) net/base/network_change_notifier_linux.cc:100:7 (unit_tests+0x923332a)
    #2 net::NetworkChangeNotifier::Create() net/base/network_change_notifier.cc:216:14 (unit_tests+0x9225765)
    #3 CreateNetworkChangeNotifierIfNeeded services/network/network_service.cc:65:29 (unit_tests+0xc24a08a)
    #4 network::NetworkService::NetworkService(std::__1::unique_ptr<service_manager::BinderRegistryWithArgs<>, std::__1::default_delete<service_manager::BinderRegistryWithArgs<> > >, mojo::InterfaceRequest<network::mojom::NetworkService>, net::NetLog*) services/network/network_service.cc:128 (unit_tests+0xc24a08a)
    #5 content::GetNetworkServiceImpl() content/browser/network_service_instance.cc:72:29 (unit_tests+0x6bbdeff)
    #6 content::StoragePartitionImpl::NetworkContextOwner::Initialize(mojo::InterfaceRequest<network::mojom::NetworkContext>, scoped_refptr<net::URLRequestContextGetter>) content/browser/storage_partition_impl.cc:244:9 (unit_tests+0x6ecd5c8)
    #7 Invoke<void (content::StoragePartitionImpl::NetworkContextOwner::*)(mojo::InterfaceRequest<network::mojom::NetworkContext>, scoped_refptr<net::URLRequestContextGetter>), content::StoragePartitionImpl::NetworkContextOwner *, mojo::InterfaceRequest<network::mojom::NetworkContext>, scoped_refptr<net::URLRequestContextGetter> > base/bind_internal.h:507:12 (unit_tests+0x6ed4433)
    #8 MakeItSo<void (content::StoragePartitionImpl::NetworkContextOwner::*)(mojo::InterfaceRequest<network::mojom::NetworkContext>, scoped_refptr<net::URLRequestContextGetter>), content::StoragePartitionImpl::NetworkContextOwner *, mojo::InterfaceRequest<network::mojom::NetworkContext>, scoped_refptr<net::URLRequestContextGetter> > base/bind_internal.h:607 (unit_tests+0x6ed4433)
    #9 RunImpl<void (content::StoragePartitionImpl::NetworkContextOwner::*)(mojo::InterfaceRequest<network::mojom::NetworkContext>, scoped_refptr<net::URLRequestContextGetter>), std::__1::tuple<base::internal::UnretainedWrapper<content::StoragePartitionImpl::NetworkContextOwner>, mojo::InterfaceRequest<network::mojom::NetworkContext>, scoped_refptr<net::URLRequestContextGetter> >, 0, 1, 2> base/bind_internal.h:680 (unit_tests+0x6ed4433)
    #10 base::internal::Invoker<base::internal::BindState<void (content::StoragePartitionImpl::NetworkContextOwner::*)(mojo::InterfaceRequest<network::mojom::NetworkContext>, scoped_refptr<net::URLRequestContextGetter>), base::internal::UnretainedWrapper<content::StoragePartitionImpl::NetworkContextOwner>, mojo::InterfaceRequest<network::mojom::NetworkContext>, scoped_refptr<net::URLRequestContextGetter> >, void ()>::RunOnce(base::internal::BindStateBase*) base/bind_internal.h:649 (unit_tests+0x6ed4433)
    #11 Run base/callback.h:99:12 (unit_tests+0x9f16578)
    #12 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:101 (unit_tests+0x9f16578)
    #13 base::internal::IncomingTaskQueue::RunTask(base::PendingTask*) base/message_loop/incoming_task_queue.cc:129:19 (unit_tests+0x9f5227e)
    #14 base::MessageLoop::RunTask(base::PendingTask*) base/message_loop/message_loop.cc:319:25 (unit_tests+0x9f4f653)
    #15 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) base/message_loop/message_loop.cc:329:5 (unit_tests+0x9f4fb3c)
    #16 base::MessageLoop::DoWork() base/message_loop/message_loop.cc:373:16 (unit_tests+0x9f4fed5)
    #17 base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_libevent.cc:210:31 (unit_tests+0xa05f7b4)
    #18 base::MessageLoop::Run(bool) base/message_loop/message_loop.cc:271:12 (unit_tests+0x9f4ed47)
    #19 non-virtual thunk to base::MessageLoop::Run(bool) base/message_loop/message_loop.cc (unit_tests+0x9f4ee34)
    #20 base::RunLoop::Run() base/run_loop.cc:102:14 (unit_tests+0x9f9a5cf)
    #21 base::Thread::Run(base::RunLoop*) base/threading/thread.cc:255:13 (unit_tests+0x9ff262b)
    #22 content::BrowserProcessSubThread::IOThreadRun(base::RunLoop*) content/browser/browser_process_sub_thread.cc:178:11 (unit_tests+0x6768a16)
    #23 content::BrowserProcessSubThread::Run(base::RunLoop*) content/browser/browser_process_sub_thread.cc:128:7 (unit_tests+0x6768923)
    #24 base::Thread::ThreadMain() base/threading/thread.cc:337:3 (unit_tests+0x9ff2c0b)
    #25 base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:76:13 (unit_tests+0xa0582f8)
  Previous read of size 8 at 0x0000131e4e28 by main thread:
    #0 net::NetworkChangeNotifier::RemoveNetworkChangeObserver(net::NetworkChangeNotifier::NetworkChangeObserver*) net/base/network_change_notifier.cc:581:7 (unit_tests+0x9228686)
    #1 MutableProfileOAuth2TokenServiceDelegate::~MutableProfileOAuth2TokenServiceDelegate() chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc:368:3 (unit_tests+0xa6e3d7f)
    #2 MutableProfileOAuth2TokenServiceDelegate::~MutableProfileOAuth2TokenServiceDelegate() chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc:365:49 (unit_tests+0xa6e3f79)
    #3 operator() buildtools/third_party/libc++/trunk/include/memory:2321:5 (unit_tests+0x511be18)
    #4 reset buildtools/third_party/libc++/trunk/include/memory:2634 (unit_tests+0x511be18)
    #5 ~unique_ptr buildtools/third_party/libc++/trunk/include/memory:2588 (unit_tests+0x511be18)
    #6 OAuth2TokenService::~OAuth2TokenService() google_apis/gaia/oauth2_token_service.cc:398 (unit_tests+0x511be18)
    #7 ~ProfileOAuth2TokenService components/signin/core/browser/profile_oauth2_token_service.cc:23:1 (unit_tests+0xc61f031)
    #8 ~ProfileOAuth2TokenService components/signin/core/browser/profile_oauth2_token_service.cc:21 (unit_tests+0xc61f031)
    #9 non-virtual thunk to ProfileOAuth2TokenService::~ProfileOAuth2TokenService() components/signin/core/browser/profile_oauth2_token_service.cc (unit_tests+0xc61f031)
    #10 KeyedServiceFactory::Disassociate(base::SupportsUserData*) components/keyed_service/core/keyed_service_factory.cc:105:5 (unit_tests+0xc5ec3cd)
    #11 KeyedServiceFactory::ContextDestroyed(base::SupportsUserData*) components/keyed_service/core/keyed_service_factory.cc:117:3 (unit_tests+0xc5ec5a3)
    #12 BrowserContextKeyedServiceFactory::BrowserContextDestroyed(content::BrowserContext*) components/keyed_service/content/browser_context_keyed_service_factory.cc:89:24 (unit_tests+0xce16a00)
    #13 BrowserContextKeyedServiceFactory::ContextDestroyed(base::SupportsUserData*) components/keyed_service/content/browser_context_keyed_service_factory.cc:123:3 (unit_tests+0xce16bac)
    #14 DependencyManager::DestroyContextServices(base::SupportsUserData*) components/keyed_service/core/dependency_manager.cc:100:14 (unit_tests+0xc5e889e)
    #15 BrowserContextDependencyManager::DestroyBrowserContextServices(content::BrowserContext*) components/keyed_service/content/browser_context_dependency_manager.cc:52:22 (unit_tests+0xce159d0)
    #16 TestingProfile::~TestingProfile() chrome/test/base/testing_profile.cc:536:40 (unit_tests+0x8fe44ff)
    #17 ~ImageWriterWriteFromUrlOperationTest chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc:91:7 (unit_tests+0x42e6393)
    #18 extensions::image_writer::ImageWriterWriteFromUrlOperationTest_SelectTargetWithExtension_Test::~ImageWriterWriteFromUrlOperationTest_SelectTargetWithExtension_Test() chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc:145 (unit_tests+0x42e6393)
    #19 DeleteSelf_ third_party/googletest/src/googletest/include/gtest/gtest.h:479:24 (unit_tests+0x535e905)
    #20 HandleExceptionsInMethodIfSupported<testing::Test, void> third_party/googletest/src/googletest/src/gtest.cc:2475 (unit_tests+0x535e905)
    #21 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2672 (unit_tests+0x535e905)
    #22 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2785:28 (unit_tests+0x535f0d6)
    #23 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:5047:43 (unit_tests+0x536f676)
    #24 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc (unit_tests+0x536ef5a)
    #25 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2329:46 (unit_tests+0x8ffa5b5)
    #26 base::TestSuite::Run() base/test/test_suite.cc:275 (unit_tests+0x8ffa5b5)
    #27 content::UnitTestTestSuite::Run() content/public/test/unittest_test_suite.cc:54:23 (unit_tests+0x914cc81)
    #28 Invoke<int (content::UnitTestTestSuite::*)(), content::UnitTestTestSuite *> base/bind_internal.h:507:12 (unit_tests+0x8feb218)
    #29 MakeItSo<int (content::UnitTestTestSuite::*const &)(), content::UnitTestTestSuite *> base/bind_internal.h:607 (unit_tests+0x8feb218)
    #30 RunImpl<int (content::UnitTestTestSuite::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::UnitTestTestSuite> > &, 0> base/bind_internal.h:680 (unit_tests+0x8feb218)
    #31 base::internal::Invoker<base::internal::BindState<int (content::UnitTestTestSuite::*)(), base::internal::UnretainedWrapper<content::UnitTestTestSuite> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:662 (unit_tests+0x8feb218)
    #32 Run base/callback.h:99:12 (unit_tests+0x8ffdb98)
    #33 base::(anonymous namespace)::LaunchUnitTestsInternal(base::OnceCallback<int ()>, unsigned long, int, bool, base::OnceCallback<void ()>) base/test/launcher/unit_test_launcher.cc:225 (unit_tests+0x8ffdb98)
    #34 base::LaunchUnitTests(int, char**, base::OnceCallback<int ()>) base/test/launcher/unit_test_launcher.cc:576:10 (unit_tests+0x8ffd9a7)
    #35 main chrome/test/base/run_all_unittests.cc:30:10 (unit_tests+0x8feb140)
  Location is global 'net::(anonymous namespace)::g_network_change_notifier' of size 8 at 0x0000131e4e28 (unit_tests+0x0000131e4e28)
  Thread T20 'Chrome_IOThread' (tid=17550, 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:965:3 (unit_tests+0x2c6c755)
    #1 base::(anonymous namespace)::CreateThread(unsigned long, bool, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:115:13 (unit_tests+0xa057da6)
    #2 base::PlatformThread::CreateWithPriority(unsigned long, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:200:10 (unit_tests+0xa057c65)
    #3 base::Thread::StartWithOptions(base::Thread::Options const&) base/threading/thread.cc:112:15 (unit_tests+0x9ff1c05)
    #4 StartIOThreadUnregistered content/public/test/test_browser_thread.cc:73:3 (unit_tests+0x9145109)
    #5 content::TestBrowserThread::StartIOThread() content/public/test/test_browser_thread.cc:66 (unit_tests+0x9145109)
    #6 content::TestBrowserThreadBundle::CreateBrowserThreads() content/public/test/test_browser_thread_bundle.cc:117:17 (unit_tests+0x91459a5)
    #7 content::TestBrowserThreadBundle::Init() content/public/test/test_browser_thread_bundle.cc:109:5 (unit_tests+0x914559a)
    #8 content::TestBrowserThreadBundle::TestBrowserThreadBundle(int) content/public/test/test_browser_thread_bundle.cc:28:3 (unit_tests+0x914531c)
    #9 extensions::image_writer::ImageWriterUnitTestBase::ImageWriterUnitTestBase() chrome/browser/extensions/api/image_writer_private/test_utils.cc:318:7 (unit_tests+0x42d9cb0)
    #10 ImageWriterWriteFromUrlOperationTest chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc:93:3 (unit_tests+0x42e6d34)
    #11 ImageWriterWriteFromUrlOperationTest_SelectTargetWithExtension_Test chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc:145 (unit_tests+0x42e6d34)
    #12 testing::internal::TestFactoryImpl<extensions::image_writer::ImageWriterWriteFromUrlOperationTest_SelectTargetWithExtension_Test>::CreateTest() third_party/googletest/src/googletest/include/gtest/internal/gtest-internal.h:466 (unit_tests+0x42e6d34)
    #13 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc (unit_tests+0x535e78e)
    #14 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2785:28 (unit_tests+0x535f0d6)
    #15 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:5047:43 (unit_tests+0x536f676)
    #16 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc (unit_tests+0x536ef5a)
    #17 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2329:46 (unit_tests+0x8ffa5b5)
    #18 base::TestSuite::Run() base/test/test_suite.cc:275 (unit_tests+0x8ffa5b5)
    #19 content::UnitTestTestSuite::Run() content/public/test/unittest_test_suite.cc:54:23 (unit_tests+0x914cc81)
    #20 Invoke<int (content::UnitTestTestSuite::*)(), content::UnitTestTestSuite *> base/bind_internal.h:507:12 (unit_tests+0x8feb218)
    #21 MakeItSo<int (content::UnitTestTestSuite::*const &)(), content::UnitTestTestSuite *> base/bind_internal.h:607 (unit_tests+0x8feb218)
    #22 RunImpl<int (content::UnitTestTestSuite::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::UnitTestTestSuite> > &, 0> base/bind_internal.h:680 (unit_tests+0x8feb218)
    #23 base::internal::Invoker<base::internal::BindState<int (content::UnitTestTestSuite::*)(), base::internal::UnretainedWrapper<content::UnitTestTestSuite> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:662 (unit_tests+0x8feb218)
    #24 Run base/callback.h:99:12 (unit_tests+0x8ffdb98)
    #25 base::(anonymous namespace)::LaunchUnitTestsInternal(base::OnceCallback<int ()>, unsigned long, int, bool, base::OnceCallback<void ()>) base/test/launcher/unit_test_launcher.cc:225 (unit_tests+0x8ffdb98)
    #26 base::LaunchUnitTests(int, char**, base::OnceCallback<int ()>) base/test/launcher/unit_test_launcher.cc:576:10 (unit_tests+0x8ffd9a7)
    #27 main chrome/test/base/run_all_unittests.cc:30:10 (unit_tests+0x8feb140)
SUMMARY: ThreadSanitizer: data race net/base/network_change_notifier.cc:673:29 in net::NetworkChangeNotifier::NetworkChangeNotifier(net::NetworkChangeNotifier::NetworkChangeCalculatorParams const&)
==================



(see also bug 807386)
 
Status: Assigned (was: Untriaged)
Untriaged w/ owner -> assigned
Status: Assigned (was: Untriaged)

Sign in to add a comment