DCHECK failure in Recent Tabs while using the sign-in promo |
|
Issue description
Install Chrome
Don't sign-in
Open the "Recent Tabs"
Sign-in with "Continue as ..."
Result, in -[SigninPromoViewMediator signinPromoViewRemoved], this DCHECK fails:
DCHECK(!self.signinInProgress);
(lldb) bt
* thread #1, name = 'CrWebMain', queue = 'com.apple.main-thread', stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
* frame #0: 0x000000010dfae9f4 Chromium`base::debug::BreakDebugger() at debugger_posix.cc:269
frame #1: 0x000000010e012059 Chromium`logging::LogMessage::~LogMessage(this=0x00007fff53458d98) at logging.cc:844
frame #2: 0x000000010e00e775 Chromium`logging::LogMessage::~LogMessage(this=0x00007fff53458d98) at logging.cc:575
frame #3: 0x000000010d537dae Chromium`::-[SigninPromoViewMediator signinPromoViewRemoved](self=0x0000628000288b10, _cmd="signinPromoViewRemoved") at signin_promo_view_mediator.mm:475
frame #4: 0x000000010dbee6a2 Chromium`::-[RecentTabsTableViewController refreshUserState:](self=0x00007ff6790786b0, _cmd="refreshUserState:", newSessionState=USER_SIGNED_IN_SYNC_IN_PROGRESS) at recent_tabs_table_view_controller.mm:555
frame #5: 0x000000010dbea078 Chromium`::-[RecentTabsTableCoordinator refreshSessionsView](self=0x00006040000b5060, _cmd="refreshSessionsView") at recent_tabs_table_coordinator.mm:245
frame #6: 0x000000010dbe863b Chromium`::-[RecentTabsTableCoordinator onSyncStateChanged](self=0x00006040000b5060, _cmd="onSyncStateChanged") at recent_tabs_table_coordinator.mm:104
frame #7: 0x000000010d0132aa Chromium`synced_sessions::SyncedSessionsObserverBridge::OnStateChanged(this=0x00006040000f9980, sync=0x00007ff67e80a000) at synced_sessions_bridge.mm:49
frame #8: 0x000000010fc63966 Chromium`syncer::SyncServiceBase::NotifyObservers(this=0x00007ff67e80a000) at sync_service_base.cc:105
frame #9: 0x000000010fb4765b Chromium`browser_sync::ProfileSyncService::RequestStart(this=0x00007ff67e80a000) at profile_sync_service.cc:2147
frame #10: 0x000000010cf2e8ff Chromium`AuthenticationService::SignIn(this=0x000060c000108c10, identity=0x00006280000117f0, hosted_domain="") at authentication_service.mm:369
frame #11: 0x000000010d51437c Chromium`::-[AuthenticationFlowPerformer signInIdentity:withHostedDomain:toBrowserState:](self=0x000060c00024e640, _cmd="signInIdentity:withHostedDomain:toBrowserState:", identity=0x00006280000117f0, hostedDomain=0x0000000000000000, browserState=0x00006040001d7e80) at authentication_flow_performer.mm:174
frame #12: 0x000000010d511020 Chromium`::-[AuthenticationFlow signInIdentity:](self=0x000060c0000c6040, _cmd="signInIdentity:", identity=0x00006280000117f0) at authentication_flow.mm:346
frame #13: 0x000000010d5109ef Chromium`::-[AuthenticationFlow continueSignin](self=0x000060c0000c6040, _cmd="continueSignin") at authentication_flow.mm:294
frame #14: 0x000000010d510908 Chromium`::-[AuthenticationFlow continueSignin](self=0x000060c0000c6040, _cmd="continueSignin") at authentication_flow.mm:276
frame #15: 0x000000010d511d19 Chromium`::-[AuthenticationFlow didFetchManagedStatus:](self=0x000060c0000c6040, _cmd="didFetchManagedStatus:", hostedDomain=0x0000000000000000) at authentication_flow.mm:419
frame #16: 0x000000010d513d18 Chromium`::-[AuthenticationFlowPerformer fetchManagedStatus:forIdentity:](self=0x000060c00024e640, _cmd="fetchManagedStatus:forIdentity:", browserState=0x00006040001d7e80, identity=0x00006280000117f0) at authentication_flow_performer.mm:140
frame #17: 0x000000010d510822 Chromium`::-[AuthenticationFlow continueSignin](self=0x000060c0000c6040, _cmd="continueSignin") at authentication_flow.mm:262
frame #18: 0x000000010d5107d8 Chromium`::-[AuthenticationFlow continueSignin](self=0x000060c0000c6040, _cmd="continueSignin") at authentication_flow.mm:258
frame #19: 0x000000010d50fc64 Chromium`::-[AuthenticationFlow startSignInWithCompletion:](self=0x000060c0000c6040, _cmd="startSignInWithCompletion:", completion=0x000000010d51b410) at authentication_flow.mm:140
frame #20: 0x000000010d51b303 Chromium`::-[ChromeSigninViewController signIntoIdentity:](self=0x00007ff67c8cfc00, _cmd="signIntoIdentity:", identity=0x00006280000117f0) at chrome_signin_view_controller.mm:335
frame #21: 0x000000010d51d909 Chromium`::-[ChromeSigninViewController enterSigninPendingState](self=0x00007ff67c8cfc00, _cmd="enterSigninPendingState") at chrome_signin_view_controller.mm:548
frame #22: 0x000000010d51c06a Chromium`::-[ChromeSigninViewController enterState:](self=0x00007ff67c8cfc00, _cmd="enterState:", state=SIGNIN_PENDING_STATE)::AuthenticationState) at chrome_signin_view_controller.mm:417
frame #23: 0x000000010d51fa4c Chromium`::-[ChromeSigninViewController viewWillAppear:](self=0x00007ff67c8cfc00, _cmd="viewWillAppear:", animated=YES) at chrome_signin_view_controller.mm:709
frame #24: 0x0000000118093150 UIKit`-[UIViewController _setViewAppearState:isAnimating:] + 444
frame #25: 0x00000001180939e5 UIKit`-[UIViewController __viewWillAppear:] + 147
frame #26: 0x000000011805e345 UIKit`__56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 1088
frame #27: 0x0000000117ef0d59 UIKit`_runAfterCACommitDeferredBlocks + 318
frame #28: 0x0000000117edfbb1 UIKit`_cleanUpAfterCAFlushAndRunDeferredBlocks + 280
frame #29: 0x0000000117f0f0e0 UIKit`_afterCACommitHandler + 137
frame #30: 0x000000011a121c07 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
frame #31: 0x000000011a121b5e CoreFoundation`__CFRunLoopDoObservers + 430
frame #32: 0x000000011a106124 CoreFoundation`__CFRunLoopRun + 1572
frame #33: 0x000000011a105889 CoreFoundation`CFRunLoopRunSpecific + 409
frame #34: 0x0000000120ab09c6 GraphicsServices`GSEventRunModal + 62
frame #35: 0x0000000117ee55d6 UIKit`UIApplicationMain + 159
frame #36: 0x000000010c7a3df2 Chromium`(anonymous namespace)::RunUIApplicationMain(argc=1, argv=0x00007fff5345d548) at chrome_exe_main.mm:56
frame #37: 0x000000010c7a38c3 Chromium`main(argc=1, argv=0x00007fff5345d548) at chrome_exe_main.mm:80
frame #38: 0x0000000121e7dd81 libdyld.dylib`start + 1
frame #39: 0x0000000121e7dd81 libdyld.dylib`start + 1
,
Jan 3 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/5ca4ade7bd117989da68f928c6f05b2c82ca08e0 commit 5ca4ade7bd117989da68f928c6f05b2c82ca08e0 Author: Jérôme Lebel <jlebel@chromium.org> Date: Wed Jan 03 13:55:24 2018 [iOS][Signin] Fixing workflow when starting the sign-in in Recent Tabs The SigninPromoViewMediator should not be deallocated until the sign-in is finished. When the user clicks on "Continue as ...", the sign-in is done as soon as the sign-in dialogs arrives. RecentTabsTableViewController should not be updated as long as the sign-in started by SigninPromoViewMediator is in progress. Once the sign-in is done, the RecentTabsTableViewController can be reloaded. cronet;master.tryserver.chromium.mac:ios-simulator-full-configs Bug: 798443 Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs Change-Id: I4a0937986e236473a7c0314c056cf437a0088c36 Reviewed-on: https://chromium-review.googlesource.com/846995 Commit-Queue: Jérôme Lebel <jlebel@chromium.org> Reviewed-by: Gauthier Ambard <gambard@chromium.org> Cr-Commit-Position: refs/heads/master@{#526678} [modify] https://crrev.com/5ca4ade7bd117989da68f928c6f05b2c82ca08e0/ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_table_coordinator.mm [modify] https://crrev.com/5ca4ade7bd117989da68f928c6f05b2c82ca08e0/ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_table_view_controller.h [modify] https://crrev.com/5ca4ade7bd117989da68f928c6f05b2c82ca08e0/ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_table_view_controller.mm |
|
►
Sign in to add a comment |
|
Comment 1 by msarda@chromium.org
, Jan 3 2018