New issue
Advanced search Search tips

Issue 796636 link

Starred by 1 user

Issue metadata

Status: Archived
Owner: ----
Closed: Dec 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Race condition between SuccessFetcher and IntranetRedirectDetector

Project Member Reported by jialiul@chromium.org, Dec 20 2017

Issue description

In existing_user_controller_browsertest.cc, SucessFetcher has some weird interaction with IntranetRedirectDetector, that cause a DCHECK fail:

[250805:250805:1220/102638.012935:FATAL:intranet_redirect_detector.cc(130)] Check failed: it != fetchers_.end(). 
#0 0x7fbeed95f55d base::debug::StackTrace::StackTrace()
#1 0x7fbeed95dadc base::debug::StackTrace::StackTrace()
#2 0x7fbeed9e28dd logging::LogMessage::~LogMessage()
#3 0x0000060dd76b IntranetRedirectDetector::OnURLFetchComplete()
#4 0x00000ba9b619 chromeos::SuccessFetcher::Start()
#5 0x0000060dcefd IntranetRedirectDetector::FinishSleep()
#6 0x000000b550df _ZN4base8internal13FunctorTraitsIMNS0_22CancelableCallbackImplINS_17RepeatingCallbackIFvvEEEEEFvvEvE6InvokeIRKNS_7WeakPtrIS6_EEJEEEvS8_OT_DpOT0_
#7 0x0000060dec7a _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIM24IntranetRedirectDetectorFvvENS_7WeakPtrIS4_EEJEEEvOT_OT0_DpOT1_
#8 0x0000060dec10 _ZN4base8internal7InvokerINS0_9BindStateIM24IntranetRedirectDetectorFvvEJNS_7WeakPtrIS3_EEEEEFvvEE7RunImplIS5_NSt3__15tupleIJS7_EEEJLm0EEEEvOT_OT0_NSC_16integer_sequenceImJXspT1_EEEE
#9 0x0000060deb69 _ZN4base8internal7InvokerINS0_9BindStateIM24IntranetRedirectDetectorFvvEJNS_7WeakPtrIS3_EEEEEFvvEE7RunOnceEPNS0_13BindStateBaseE
#10 0x7fbeed90ae01 _ZNO4base12OnceCallbackIFvvEE3RunEv
#11 0x7fbeed964350 base::debug::TaskAnnotator::RunTask()
#12 0x7fbeeda01273 base::internal::IncomingTaskQueue::RunTask()
#13 0x7fbeeda09538 base::MessageLoop::RunTask()
#14 0x7fbeeda097a5 base::MessageLoop::DeferOrRunPendingTask()
#15 0x7fbeeda09d62 base::MessageLoop::DoDelayedWork()
#16 0x7fbeeda0fe5d base::MessagePumpLibevent::Run()
#17 0x7fbeeda08de8 base::MessageLoop::Run()
#18 0x7fbeedaba76e base::RunLoop::Run()
#19 0x0000068edc16 content::RunThisRunLoop()
#20 0x0000068ef311 content::MessageLoopRunner::Run()
#21 0x0000068ef910 content::WindowedNotificationObserver::Wait()
#22 0x0000023105db chromeos::ExistingUserControllerSavePasswordHashTest_GaiaOnlineLoginSavesPasswordHashToPrefs_Test::RunTestOnMainThread()
#23 0x00000682da87 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop()
#24 0x000000959cdd _ZN4base8internal13FunctorTraitsIM25RenderViewContextMenuBaseFvvEvE6InvokeIP21RenderViewContextMenuJEEEvS4_OT_DpOT0_
#25 0x000000959c24 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIM25RenderViewContextMenuBaseFvvEJP21RenderViewContextMenuEEEvOT_DpOT0_
#26 0x00000682fdc5 _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserTestBaseEFvvEJNS0_17UnretainedWrapperIS4_EEEEEFvvEE7RunImplIRKS6_RKNSt3__15tupleIJS8_EEEJLm0EEEEvOT_OT0_NSF_16integer_sequenceImJXspT1_EEEE
#27 0x00000682fd0c _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserTestBaseEFvvEJNS0_17UnretainedWrapperIS4_EEEEEFvvEE3RunEPNS0_13BindStateBaseE
#28 0x00000093d4fd _ZNKR4base17RepeatingCallbackIFvvEE3RunEv
#29 0x0000057a9552 ChromeBrowserMainParts::PreMainMessageLoopRunImpl()
#30 0x0000057a79bc ChromeBrowserMainParts::PreMainMessageLoopRun()
#31 0x000002c0e90f chromeos::ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun()
#32 0x7fbee52d0b34 content::BrowserMainLoop::PreMainMessageLoopRun()
#33 0x7fbee41aa48d _ZN4base8internal13FunctorTraitsIMN7content14NetworkContext11DiskCheckerEFvvEvE6InvokeIPS4_JEEEvS6_OT_DpOT0_
#34 0x7fbee41aa3d4 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIMN7content14NetworkContextEFvvEJPS5_EEEvOT_DpOT0_
#35 0x7fbee52d7ae5 _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE7RunImplIRKS6_RKNSt3__15tupleIJS8_EEEJLm0EEEEiOT_OT0_NSF_16integer_sequenceImJXspT1_EEEE
#36 0x7fbee52d7a2c _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE3RunEPNS0_13BindStateBaseE
#37 0x7fbee416579d _ZNKR4base17RepeatingCallbackIFvvEE3RunEv
#38 0x7fbee60640dd content::StartupTaskRunner::RunAllTasksNow()
#39 0x7fbee52cc065 content::BrowserMainLoop::CreateStartupTasks()
#40 0x7fbee52d99ad content::BrowserMainRunnerImpl::Initialize()
#41 0x7fbee52c4e04 content::BrowserMain()
#42 0x7fbee71ab9ad content::RunNamedProcessTypeMain()
#43 0x7fbee71ae452 content::ContentMainRunnerImpl::Run()
#44 0x7fbee71a5b1d content::ContentServiceManagerMainDelegate::RunEmbedderProcess()
#45 0x7fbee06fc954 service_manager::Main()
#46 0x7fbee71aa8db content::ContentMain()
#47 0x00000682d6e0 content::BrowserTestBase::SetUp()
#48 0x0000056bc81a InProcessBrowserTest::SetUp()
#49 0x00000249c06b policy::DevicePolicyCrosBrowserTest::SetUp()
#50 0x0000008ad5ee _ZN7testing8internal12InvokeHelperIRKNSt3__16vectorIPN12user_manager4UserENS2_9allocatorIS6_EEEENS2_5tupleIJEEEE12InvokeMethodIN8chromeos15MockUserManagerEMSH_KFSB_vEEESB_PT_T0_RKSD_
#51 0x00000358db92 testing::internal::HandleExceptionsInMethodIfSupported<>()
#52 0x000003578d94 testing::Test::Run()
#53 0x00000357971d testing::TestInfo::Run()
#54 0x00000357a17c testing::TestCase::Run()
#55 0x000003585cdc testing::internal::UnitTestImpl::RunAllTests()
#56 0x00000359974e testing::internal::HandleSehExceptionsInMethodIfSupported<>()
#57 0x00000358f082 testing::internal::HandleExceptionsInMethodIfSupported<>()
#58 0x0000035858ee testing::UnitTest::Run()
#59 0x0000056f3501 RUN_ALL_TESTS()
#60 0x0000056f05c2 base::TestSuite::Run()
#61 0x000005662f9a ChromeTestSuiteRunner::RunTestSuite()

https://chromium-review.googlesource.com/c/chromium/src/+/827709/5/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc#868
 
Project Member

Comment 1 by bugdroid1@chromium.org, Dec 21 2017

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

commit a0e349ce457ec6988857c30f044769a20a870c16
Author: Xiyuan Xia <xiyuan@chromium.org>
Date: Thu Dec 21 19:29:37 2017

Fix IntranetRedirectDetector DCHECK in test

ExistingUserControllerTest uses SuccessFetcher to simulate
URL request success. However, SuccessFetcher::Start calls
delegate's OnURLFetchComplete synchrounously and breaks the
assumption in IntranetRedirectDetector that URLFetcher::Start
is asynchronous. This CL makes SuccessFetcher::Start calls
OnURLFetchComplete via a PostTask to fix the DCHECK in
IntranetRedirectDetector.

Bug:  796636 
Change-Id: I984833c424eab84042a0ee418ba39623119dc822
Reviewed-on: https://chromium-review.googlesource.com/840449
Reviewed-by: Toni Barzic <tbarzic@chromium.org>
Commit-Queue: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#525766}
[modify] https://crrev.com/a0e349ce457ec6988857c30f044769a20a870c16/chromeos/login/auth/mock_url_fetchers.cc
[modify] https://crrev.com/a0e349ce457ec6988857c30f044769a20a870c16/chromeos/login/auth/mock_url_fetchers.h

Comment 2 by xiy...@chromium.org, Dec 21 2017

Status: Fixed (was: Available)
Thanks Xiyuan! I'll update https://chromium-review.googlesource.com/c/chromium/src/+/827709 shortly. 
Status: Archived (was: Fixed)

Sign in to add a comment