New issue
Advanced search Search tips

Issue 670137 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Dec 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug

Blocking:
issue 622400



Sign in to add a comment

Chrome Branded Builds Post Tasks on SetupFieldTrials

Project Member Reported by robliao@chromium.org, Dec 1 2016

Issue description

In Chrome Branded Builds, the Blocking Pool is called during SetupFieldTrials here:

00 00000000`0014b560 00000001`80108ff7 base!base::debug::BreakDebugger+0x1b [g:\src\base\debug\debugger_win.cc @ 21]
01 00000000`0014b590 00000001`802f2615 base!logging::LogMessage::~LogMessage+0x357 [g:\src\base\logging.cc @ 751]
02 00000000`0014bca0 00000001`802f573f base!base::SequencedWorkerPool::Inner::FinishStartingAdditionalThread+0xb5 [g:\src\base\threading\sequenced_worker_pool.cc @ 1361]
03 00000000`0014bf50 00000001`802f4b22 base!base::SequencedWorkerPool::Inner::PostTask+0x7ef [g:\src\base\threading\sequenced_worker_pool.cc @ 763]
04 00000000`0014c6d0 00000001`802f4978 base!base::SequencedWorkerPool::PostDelayedWorkerTask+0xc2 [g:\src\base\threading\sequenced_worker_pool.cc @ 1517]
05 00000000`0014c750 00000001`8029de6d base!base::SequencedWorkerPool::PostDelayedTask+0x48 [g:\src\base\threading\sequenced_worker_pool.cc @ 1571]
06 00000000`0014c790 00000001`44a8733f base!base::TaskRunner::PostTask+0x4d [g:\src\base\task_runner.cc @ 46]
07 00000000`0014c7e0 00000001`44a84acf browser_tests!`anonymous namespace'::PostStoreMetricsClientInfo+0x7f [g:\src\chrome\browser\metrics\chrome_metrics_services_manager_client.cc @ 62]
08 00000000`0014c860 00000001`44a84bd7 browser_tests!base::internal::FunctorTraits<void (__cdecl*)(metrics::ClientInfo const & __ptr64),void>::Invoke<metrics::ClientInfo const & __ptr64>+0x1f [g:\src\base\bind_internal.h @ 165]
09 00000000`0014c890 00000001`44a84d41 browser_tests!base::internal::InvokeHelper<0,void>::MakeItSo<void (__cdecl*const & __ptr64)(metrics::ClientInfo const & __ptr64),metrics::ClientInfo const & __ptr64>+0x37 [g:\src\base\bind_internal.h @ 287]
0a 00000000`0014c8d0 00000001`44a87432 browser_tests!base::internal::Invoker<base::internal::BindState<void (__cdecl*)(metrics::ClientInfo const & __ptr64)>,void __cdecl(metrics::ClientInfo const & __ptr64)>::RunImpl<void (__cdecl*const & __ptr64)(metrics::ClientInfo const & __ptr64),std::tuple<> const & __ptr64>+0x41 [g:\src\base\bind_internal.h @ 365]
0b 00000000`0014c910 00000001`45b10101 browser_tests!base::internal::Invoker<base::internal::BindState<void (__cdecl*)(metrics::ClientInfo const & __ptr64)>,void __cdecl(metrics::ClientInfo const & __ptr64)>::Run+0x52 [g:\src\base\bind_internal.h @ 343]
0c 00000000`0014c960 00000001`45b0e891 browser_tests!base::internal::RunMixin<base::Callback<void __cdecl(metrics::ClientInfo const & __ptr64),1,1> >::Run+0x71 [g:\src\base\callback.h @ 86]
0d 00000000`0014c9b0 00000001`45b0f1d1 browser_tests!metrics::MetricsStateManager::BackUpCurrentClientInfo+0xd1 [g:\src\components\metrics\metrics_state_manager.cc @ 234]
0e 00000000`0014ca70 00000001`45b0e2da browser_tests!metrics::MetricsStateManager::ForceClientIdCreation+0x3b1 [g:\src\components\metrics\metrics_state_manager.cc @ 135]
0f 00000000`0014cc60 00000001`45b0eb7a browser_tests!metrics::MetricsStateManager::MetricsStateManager+0x11a [g:\src\components\metrics\metrics_state_manager.cc @ 72]
10 00000000`0014cdb0 00000001`44a86dba browser_tests!metrics::MetricsStateManager::Create+0x6a [g:\src\components\metrics\metrics_state_manager.cc @ 208]
11 00000000`0014ce10 00000001`44a86388 browser_tests!ChromeMetricsServicesManagerClient::GetMetricsStateManager+0x17a [g:\src\chrome\browser\metrics\chrome_metrics_services_manager_client.cc @ 281]
12 00000000`0014cfb0 00000001`48a25289 browser_tests!ChromeMetricsServicesManagerClient::CreateEntropyProvider+0x18 [g:\src\chrome\browser\metrics\chrome_metrics_services_manager_client.cc @ 215]
13 00000000`0014cfe0 00000001`449ea071 browser_tests!metrics_services_manager::MetricsServicesManager::CreateEntropyProvider+0x39 [g:\src\components\metrics_services_manager\metrics_services_manager.cc @ 29]
14 00000000`0014d020 00000001`449e5fb2 browser_tests!ChromeBrowserMainParts::SetupFieldTrials+0x221 [g:\src\chrome\browser\chrome_browser_main.cc @ 666]
15 00000000`0014d770 00000001`449e49a4 browser_tests!ChromeBrowserMainParts::PreCreateThreadsImpl+0x1272 [g:\src\chrome\browser\chrome_browser_main.cc @ 1222]
16 00000000`0014dd60 00000001`44554c7b browser_tests!ChromeBrowserMainParts::PreCreateThreads+0xe4 [g:\src\chrome\browser\chrome_browser_main.cc @ 933]
17 00000000`0014e040 00000000`094232d1 browser_tests!ChromeBrowserMainPartsWin::PreCreateThreads+0x2b [g:\src\chrome\browser\chrome_browser_main_win.cc @ 292]
18 00000000`0014e0e0 00000000`094157f4 content!content::BrowserMainLoop::PreCreateThreads+0x121 [g:\src\content\browser\browser_main_loop.cc @ 751]

This will need to be deferred.
 

Comment 1 by gab@chromium.org, Dec 1 2016

But wait, why is SWP disabled in browser tests (ref. your email)? I'd expect it to be enabled w/ or w/o redirection, but enabled.

Or actually is it not never enabled at the time of SetupFieldTrials?

Comment 2 by gab@chromium.org, Dec 1 2016

Ah nvm, I think your analysis over email is correct up to "why does Canary not crash". Canary doesn't crash because IMO simply this DCHECK isn't fatal (the task might never run but it's not fatal), not because it calls SWP::EnableForProcess
SWP is currently *enabled* by default because I haven't figured out how to enable it for an Android test yet. That means that you should never get a SWP DCHECK failure when you run a standalone Chrome/Chromium.

SWP is explicitly *disabled* at the beginning of browser tests. It is expected to be re-enabled immediately after TaskScheduler initialization. If you post a SWP task in a browser test before SWP is explicitly re-enabled, you get a DCHECK failure. 


Call stack with latest SWP changes:

#0 0x7fdd8947819e base::debug::StackTrace::StackTrace()
#1 0x7fdd894e563f logging::LogMessage::~LogMessage()
#2 0x7fdd89650065 base::SequencedWorkerPool::Inner::FinishStartingAdditionalThread()
#3 0x7fdd8964f493 base::SequencedWorkerPool::Inner::PostTask()
#4 0x7fdd89652a8d base::SequencedWorkerPool::PostDelayedWorkerTask()
#5 0x7fdd89652e05 base::SequencedWorkerPool::PostDelayedTask()
#6 0x7fdd89614048 base::TaskRunner::PostTask()
#7 0x000003194a16 (anonymous namespace)::PostStoreMetricsClientInfo()
#8 0x00000093ce5a _ZN4base8internal13FunctorTraitsIPFvRKNS_8CallbackIFvvELNS0_8CopyModeE1ELNS0_10RepeatModeE1EEEEvE6InvokeIJS8_EEEvSA_DpOT_
#9 0x00000093ce08 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKPFvRKNS_8CallbackIFvvELNS0_8CopyModeE1ELNS0_10RepeatModeE1EEEEJSA_EEEvOT_DpOT0_
#10 0x000002bba7b6 _ZN4base8internal7InvokerINS0_9BindStateIPFvRKNS_8FilePathEEJEEES6_E7RunImplIRKS7_RKSt5tupleIJEEJEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEES5_
#11 0x0000031966bc _ZN4base8internal7InvokerINS0_9BindStateIPFvRKN7metrics10ClientInfoEEJEEES7_E3RunEPNS0_13BindStateBaseES6_
#12 0x000000964056 base::internal::RunMixin<>::Run()
#13 0x00000419ddd4 metrics::MetricsStateManager::BackUpCurrentClientInfo()
#14 0x00000419daee metrics::MetricsStateManager::ForceClientIdCreation()
#15 0x00000419d03a metrics::MetricsStateManager::MetricsStateManager()
#16 0x00000419e701 metrics::MetricsStateManager::Create()
#17 0x0000031945dc ChromeMetricsServicesManagerClient::GetMetricsStateManager()
#18 0x000003194803 ChromeMetricsServicesManagerClient::CreateEntropyProvider()
#19 0x000006018aec metrics_services_manager::MetricsServicesManager::CreateEntropyProvider()
#20 0x00000345de91 ChromeBrowserMainParts::SetupFieldTrials()
#21 0x000003460c3b ChromeBrowserMainParts::PreCreateThreadsImpl()
#22 0x00000345f675 ChromeBrowserMainParts::PreCreateThreads()
#23 0x7fdd80bf5e06 content::BrowserMainLoop::PreCreateThreads()
#24 0x7fdd8021bf65 _ZN4base8internal13FunctorTraitsIMN7content22IndexedDBCallbacksImpl13InternalStateEFvvEvE6InvokeIPS4_JEEEvS6_OT_DpOT0_
#25 0x7fdd80c00d31 _ZN4base8internal12InvokeHelperILb0EiE8MakeItSoIRKMN7content15BrowserMainLoopEFivEJPS5_EEEiOT_DpOT0_
#26 0x7fdd80c00cd7 _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEiOT_OT0_NS_13IndexSequenceIJXspT1_EEEE
#27 0x7fdd80c00c1c _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE3RunEPNS0_13BindStateBaseE
#28 0x7fdd80104f8b base::internal::RunMixin<>::Run()
#29 0x7fdd817c599b content::StartupTaskRunner::RunAllTasksNow()
#30 0x7fdd80bf6580 content::BrowserMainLoop::CreateStartupTasks()
#31 0x7fdd80c04b70 content::BrowserMainRunnerImpl::Initialize()
#32 0x7fdd80bf27ef content::BrowserMain()
#33 0x7fdd824437f6 content::RunNamedProcessTypeMain()
#34 0x7fdd82445c22 content::ContentMainRunnerImpl::Run()
#35 0x7fdd82442b42 content::ContentMain()
#36 0x0000039264eb content::BrowserTestBase::SetUp()
#37 0x0000027f5f14 InProcessBrowserTest::SetUp()
#38 0x0000014fe17d ExtensionBrowserTest::SetUp()
#39 0x00000109983e _ZN7testing8internal12InvokeHelperIvSt5tupleIJEEE12InvokeMethodI14ServiceProcessMS6_FvvEEEvPT_T0_RKS3_
#40 0x000003ad4cf2 testing::internal::HandleExceptionsInMethodIfSupported<>()
#41 0x000003ac9ae4 testing::Test::Run()
#42 0x000003aca2ed testing::TestInfo::Run()
#43 0x000003aca88f testing::TestCase::Run()
#44 0x000003acfbdc testing::internal::UnitTestImpl::RunAllTests()
#45 0x000001098e6e _ZN7testing8internal12InvokeHelperIbSt5tupleIJEEE12InvokeMethodI20MockServiceIPCServerMS6_FbvEEEbPT_T0_RKS3_
#46 0x000003ad63e2 testing::internal::HandleExceptionsInMethodIfSupported<>()
#47 0x000003acf87f testing::UnitTest::Run()
#48 0x0000028096f1 RUN_ALL_TESTS()
#49 0x000002808622 base::TestSuite::Run()
#50 0x0000027afb10 ChromeTestSuiteRunner::RunTestSuite()
#51 0x0000027afc09 ChromeTestLauncherDelegate::RunTestSuite()
#52 0x0000039b4782 content::LaunchTests()
#53 0x0000027aff99 LaunchChromeTests()
#54 0x0000027afa35 main
#55 0x7fdd70ebff45 __libc_start_main
#56 0x0000007a86f5 <unknown>

Comment 5 by fdoray@chromium.org, Dec 12 2016

Cc: fdoray@chromium.org
 Issue 673064  has been merged into this issue.
Labels: -Pri-3 Pri-1
Status: Started (was: Assigned)
Status: Fixed (was: Started)
Project Member

Comment 8 by bugdroid1@chromium.org, Dec 13 2016

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

commit 14cdd1233c48fdd5268dbdc4ad5219c638ee22d7
Author: robliao <robliao@chromium.org>
Date: Tue Dec 13 19:30:29 2016

Defer Posting StoreMetricsClientInfo During PreCreateThreads

The BlockingPool isn't ready to go during PreCreateThreads. This CL
posts a task to UI's message loop to post the real task to call
StoreMetricsClientInfo.

BUG= 670137 

Review-Url: https://codereview.chromium.org/2566323002
Cr-Commit-Position: refs/heads/master@{#438254}

[modify] https://crrev.com/14cdd1233c48fdd5268dbdc4ad5219c638ee22d7/chrome/browser/metrics/chrome_metrics_services_manager_client.cc

Sign in to add a comment