New issue
Advanced search Search tips

Issue 766338 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug-Regression



Sign in to add a comment

IdentityManager doesn't close its connection on shutdown, which can trigger not-run callbacks to DCHECK

Project Member Reported by michae...@chromium.org, Sep 18 2017

Issue description

Getting this crash on exit in ToT with dcheck enabled.

Repro steps: this seems to crash consistently:

1. install Keep extension (https://chrome.google.com/webstore/detail/google-keep-chrome-extens/lpcaedmchfhocbbapmcbpinfpgnhiddi)
2. notice sign-in tab opens
3. exit Chrome by closing the window


[124872:124872:0918/143402.346191:FATAL:interface_endpoint_client.cc(32)] Check failed: !is_valid. The callback passed to IdentityManager::GetPrimaryAccountWhenAvailable() was never run.
#0 0x7f1dae57d787 base::debug::StackTrace::StackTrace()
#1 0x7f1dae5a4ac1 logging::LogMessage::~LogMessage()
#2 0x7f1dad74c30b mojo::(anonymous namespace)::DCheckIfInvalid()
#3 0x5627aaf42a62 _ZN4base8internal9BindStateIMN8identity5mojom63IdentityManager_GetPrimaryAccountWhenAvailable_ProxyToResponderEFvRK11AccountInfoRKNS2_12AccountStateEEJNS0_13PassedWrapperINSt3__110unique_ptrIS4_NSE_14default_deleteIS4_EEEEEEEED2Ev
#4 0x5627aaf429b1 _ZN4base8internal9BindStateIMN8identity5mojom63IdentityManager_GetPrimaryAccountWhenAvailable_ProxyToResponderEFvRK11AccountInfoRKNS2_12AccountStateEEJNS0_13PassedWrapperINSt3__110unique_ptrIS4_NSE_14default_deleteIS4_EEEEEEEE7DestroyEPKNS0_13BindStateBaseE
#5 0x5627aafa6cc8 identity::IdentityManager::~IdentityManager()
#6 0x5627aafa6db9 identity::IdentityManager::~IdentityManager()
#7 0x5627ab6bcbb6 SigninManagerBase::Shutdown()
#8 0x5627ab121422 SigninManagerFactory::BrowserContextShutdown()
#9 0x7f1da9ed781c DependencyManager::DestroyContextServices()
#10 0x5627ab2722af ProfileImpl::~ProfileImpl()
#11 0x5627ab2724c9 ProfileImpl::~ProfileImpl()
#12 0x5627ab26b7c5 ProfileDestroyer::DestroyProfileWhenAppropriate()
#13 0x5627ab10e93b std::__1::__tree<>::destroy()
#14 0x5627ab10e870 ProfileManager::~ProfileManager()
#15 0x5627ab105609 ProfileManager::~ProfileManager()
#16 0x5627ab398c39 BrowserProcessImpl::StartTearDown()
#17 0x5627ab30eff8 ChromeBrowserMainParts::PostMainMessageLoopRun()
#18 0x7f1dab8df89b content::BrowserMainLoop::ShutdownThreadsAndCleanUp()
#19 0x7f1dab8e25b1 content::BrowserMainRunnerImpl::Shutdown()
#20 0x7f1dab8da7b3 content::BrowserMain()
#21 0x7f1dac1a6bbf content::RunNamedProcessTypeMain()
#22 0x7f1dac1a7657 content::ContentMainRunnerImpl::Run()
#23 0x7f1daeac9290 service_manager::Main()
#24 0x7f1dac1a5f82 content::ContentMain()
#25 0x5627aac1401c ChromeMain
#26 0x7f1da1a8df45 __libc_start_main
#27 0x5627aac13e6f <unknown>

Received signal 6
#0 0x7f1dae57d787 base::debug::StackTrace::StackTrace()
#1 0x7f1dae57d25f base::debug::(anonymous namespace)::StackDumpSignalHandler()
#2 0x7f1dae702330 <unknown>
#3 0x7f1da1aa2c37 gsignal
#4 0x7f1da1aa6028 abort
#5 0x7f1dae57b372 base::debug::BreakDebugger()
#6 0x7f1dae5a4f94 logging::LogMessage::~LogMessage()
#7 0x7f1dad74c30b mojo::(anonymous namespace)::DCheckIfInvalid()
#8 0x5627aaf42a62 _ZN4base8internal9BindStateIMN8identity5mojom63IdentityManager_GetPrimaryAccountWhenAvailable_ProxyToResponderEFvRK11AccountInfoRKNS2_12AccountStateEEJNS0_13PassedWrapperINSt3__110unique_ptrIS4_NSE_14default_deleteIS4_EEEEEEEED2Ev
#9 0x5627aaf429b1 _ZN4base8internal9BindStateIMN8identity5mojom63IdentityManager_GetPrimaryAccountWhenAvailable_ProxyToResponderEFvRK11AccountInfoRKNS2_12AccountStateEEJNS0_13PassedWrapperINSt3__110unique_ptrIS4_NSE_14default_deleteIS4_EEEEEEEE7DestroyEPKNS0_13BindStateBaseE
#10 0x5627aafa6cc8 identity::IdentityManager::~IdentityManager()
#11 0x5627aafa6db9 identity::IdentityManager::~IdentityManager()
#12 0x5627ab6bcbb6 SigninManagerBase::Shutdown()
#13 0x5627ab121422 SigninManagerFactory::BrowserContextShutdown()
#14 0x7f1da9ed781c DependencyManager::DestroyContextServices()
#15 0x5627ab2722af ProfileImpl::~ProfileImpl()
#16 0x5627ab2724c9 ProfileImpl::~ProfileImpl()
#17 0x5627ab26b7c5 ProfileDestroyer::DestroyProfileWhenAppropriate()
#18 0x5627ab10e93b std::__1::__tree<>::destroy()
#19 0x5627ab10e870 ProfileManager::~ProfileManager()
#20 0x5627ab105609 ProfileManager::~ProfileManager()
#21 0x5627ab398c39 BrowserProcessImpl::StartTearDown()
#22 0x5627ab30eff8 ChromeBrowserMainParts::PostMainMessageLoopRun()
#23 0x7f1dab8df89b content::BrowserMainLoop::ShutdownThreadsAndCleanUp()
#24 0x7f1dab8e25b1 content::BrowserMainRunnerImpl::Shutdown()
#25 0x7f1dab8da7b3 content::BrowserMain()
#26 0x7f1dac1a6bbf content::RunNamedProcessTypeMain()
#27 0x7f1dac1a7657 content::ContentMainRunnerImpl::Run()
#28 0x7f1daeac9290 service_manager::Main()
#29 0x7f1dac1a5f82 content::ContentMain()
#30 0x5627aac1401c ChromeMain
#31 0x7f1da1a8df45 __libc_start_main
#32 0x5627aac13e6f <unknown>
  r8: ffff99cafbe71dd0  r9: ffff99cafbe71dc0 r10: 0000000000000008 r11: 0000000000000202
 r12: 00007ffda1fc3fa0 r13: 00000000000000ba r14: 00007ffda1fc3f98 r15: 00007ffda1fc3f90
  di: 000000000001e7c8  si: 000000000001e7c8  bp: 00007ffda1fc3b50  bx: 00007ffda1fc3b50
  dx: 0000000000000006  ax: 0000000000000000  cx: 00007f1da1aa2c37  sp: 00007ffda1fc39a8
  ip: 00007f1da1aa2c37 efl: 0000000000000202 cgf: 0014000000000033 erf: 0000000000000000
 trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000
[end of stack trace]
Calling _exit(1). Core file will not be generated.

 
Status: Started (was: Untriaged)
Summary: IdentityManager doesn't close its connection on shutdown, which can trigger not-run callbacks to shut down (was: DCHECK failure in interface_endpoint_client.cc: callback never run)
How timely. I discovered this issue myself earlier today in a different context.
Summary: IdentityManager doesn't close its connection on shutdown, which can trigger not-run callbacks to DCHECK (was: IdentityManager doesn't close its connection on shutdown, which can trigger not-run callbacks to shut down)
Project Member

Comment 3 by bugdroid1@chromium.org, Sep 19 2017

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

commit f9792c073b3c79a5133462c0da01263db74ce375
Author: Colin Blundell <blundell@chromium.org>
Date: Tue Sep 19 18:02:53 2017

[Identity Service] Close binding on IdentityManager shutdown

IdentityManager was not closing its binding on its shutdown, which
causes a DCHECK to fire in the case where it is holding onto a pending
callback from a consumer request. One example where this occurs is the
case where a consumer has called GetPrimaryAccountWhenAvailable() and
the browser subsequently shuts down without the user ever having signed
in.

This CL fixes the glitch and adds a unittest that causes the relevant
DCHECK to fire without the fix. See  crbug.com/766338  for repro steps
that exercise this behavior in production (note that DCHECKs must be
enabled to actually see evidence of the prior buggy behavior).

Bug:  766338 
Change-Id: If1cf9e03111cb7825f0311b4f971d38d5c31bca7
Reviewed-on: https://chromium-review.googlesource.com/672546
Reviewed-by: Ken Rockot <rockot@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#502893}
[modify] https://crrev.com/f9792c073b3c79a5133462c0da01263db74ce375/services/identity/identity_manager.cc
[modify] https://crrev.com/f9792c073b3c79a5133462c0da01263db74ce375/services/identity/identity_manager_unittest.cc

Status: Fixed (was: Started)

Sign in to add a comment