DCHECK hits when using --disable-extensions |
||||||
Issue descriptionChrome Version: ToT OS: build for Chrome OS under Linux What steps will reproduce the problem? (1) Run Chrome with arguments --disable-extensions --login-manager. (2) Log in under some user. As the result, a number of DCHECK's are observed: [FATAL:extension_registry.cc(89)] Check failed: GenerateInstalledExtensionsSet()->Contains(extension->id()). #0 0x7fe3e48df81b base::debug::StackTrace::StackTrace() #1 0x7fe3e48de55c base::debug::StackTrace::StackTrace() #2 0x7fe3e494108c logging::LogMessage::~LogMessage() #3 0x7fe3e5eea873 extensions::ExtensionRegistry::TriggerOnInstalled() #4 0x7fe3e9660ce0 ExtensionService::FinishInstallation() #5 0x7fe3e965f543 ExtensionService::AddNewOrUpdatedExtension() #6 0x7fe3e96600d2 ExtensionService::OnExtensionInstalled() #7 0x7fe3e960e152 extensions::CrxInstaller::ReportSuccessFromUIThread() #8 0x7fe3e960f707 _ZN4base8internal13FunctorTraitsIMN10extensions12CrxInstallerEFvvEvE6InvokeIRK13scoped_refptrIS3 _EJEEEvS5_OT_DpOT0_ #9 0x7fe3e960f651 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKMN10extensions12CrxInstallerEFvvEJRK13scoped_r efptrIS5_EEEEvOT_DpOT0_ #10 0x7fe3e960f5f2 _ZN4base8internal7InvokerINS0_9BindStateIMN10extensions12CrxInstallerEFvvEJ13scoped_refptrIS4_E EEEFvvEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEE #11 0x7fe3e960f53c _ZN4base8internal7InvokerINS0_9BindStateIMN10extensions12CrxInstallerEFvvEJ13scoped_refptrIS4_E EEEFvvEE3RunEPNS0_13BindStateBaseE #12 0x7fe3e48e551e _ZNO4base8CallbackIFvvELNS_8internal8CopyModeE0ELNS2_10RepeatModeE0EE3RunEv #13 0x7fe3e48e4d11 base::debug::TaskAnnotator::RunTask() #14 0x7fe3e496821e base::MessageLoop::RunTask() #15 0x7fe3e4968484 base::MessageLoop::DeferOrRunPendingTask() #16 0x7fe3e4968774 base::MessageLoop::DoWork() #17 0x7fe3e497e0dc base::MessagePumpGlib::HandleDispatch() #18 0x7fe3e497e781 base::(anonymous namespace)::WorkSourceDispatch() #19 0x7fe3d0cf3e04 g_main_context_dispatch #20 0x7fe3d0cf4048 <unknown> #21 0x7fe3d0cf40ec g_main_context_iteration #22 0x7fe3e497e1df base::MessagePumpGlib::Run() #23 0x7fe3e4967e02 base::MessageLoop::RunHandler() #24 0x7fe3e4a099b4 base::RunLoop::Run() #25 0x7fe3e7b31096 ChromeBrowserMainParts::MainMessageLoopRun() #26 0x7fe3de10912b content::BrowserMainLoop::RunMainMessageLoopParts() #27 0x7fe3de1151a5 content::BrowserMainRunnerImpl::Run() #28 0x7fe3de102b98 content::BrowserMain() #29 0x7fe3df855846 content::RunNamedProcessTypeMain() #30 0x7fe3df85780e content::ContentMainRunnerImpl::Run() #31 0x7fe3df854d3a content::ContentServiceManagerMainDelegate::Run() #32 0x7fe3cd64bb4a service_manager::Main() #33 0x7fe3df85533b content::ContentMain() #34 0x7fe3e5bd3b01 ChromeMain #35 0x7fe3e5bd39a2 main #36 0x7fe3ce031f45 __libc_start_main #37 0x7fe3e5bd3884 <unknown> Adding some debug logging shows that this happens for some standard extensions like "Google Sheets", "Google Forms", "Google Docs" (though they all, AFAIU, are not the component extensions). The same DCHECK is hit when trying to install an extension using the "Load unpacked extension" button. It seems that the extension is NOT installed fully though (which is good), despite that the stack trace says "FinishInstallation".
,
May 23 2017
The DCHECK's are hit for the Drive apps. Don't know what it is, but, based on their manifest()->location()==INTERNAL, I assume they should be enabled even under --disable-extensions?
,
May 23 2017
Hmm, looks like the problem is a bit deeper than just handling of Drive apps. When I compare runs with --disable-extensions and without it, I observer that the DriveApp*-related code only attempts to install something when under --disable-extensions. That's due to this logic: https://cs.chromium.org/chromium/src/chrome/browser/apps/drive/drive_app_provider.cc?l=200&rcl=778f69d41ab8539ec7d45d7e24ed58582133d00e I.e. if the corresponding Chrome app is found for the given DriveAppInfo, then nothing is done, but otherwise a DriveAppConverter is started (which is what eventually leads to the unexpected extension installation and DCHECK). So should the whole Drive app machinery be skipped when under --disable-extensions? Or is there some nicer way to deal with this? +some apps/drive OWNERS
,
May 24 2017
Hmm, sorry I don't remember much about the drive app integration. Adding xiyuan who might know more.
,
May 24 2017
The intention of DriveAppProvider is to wrap user's connected Drive app into a local bookmark app if corresponding chrome extension is not installed for the user. I don't think we should run the logic at all if extensions are disabled. It would NOT be correct to install the wrapper bookmark apps because extension system is disabled.
,
May 26 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6b9da1b9550a2bc39517e4a41caedddded7438c8 commit 6b9da1b9550a2bc39517e4a41caedddded7438c8 Author: Maksim Ivanov <emaxx@chromium.org> Date: Fri May 26 16:23:07 2017 Skip Drive apps integration when extensions are disabled The Drive apps integration (mainly provided by DriveAppProvider) should be disabled when extensions are completely disabled - e.g. when the --disable-extensions command line flag is specified. Not doing this would result in unexpected attempts to fetch and install Drive apps, which will eventually fail and hit some DCHECK's in the extension system. TEST=Manual: run the browser built in Debug mode with target_os="chromeos" with the --disable-extensions flag specified Bug: chromium:709602 Change-Id: I34e3b0850affea8f45a50cba54e7a671f7f4b720 Reviewed-on: https://chromium-review.googlesource.com/517045 Reviewed-by: Xiyuan Xia <xiyuan@chromium.org> Commit-Queue: Maksim Ivanov <emaxx@chromium.org> Cr-Commit-Position: refs/heads/master@{#475027} [modify] https://crrev.com/6b9da1b9550a2bc39517e4a41caedddded7438c8/chrome/browser/apps/drive/drive_app_converter.cc [modify] https://crrev.com/6b9da1b9550a2bc39517e4a41caedddded7438c8/chrome/browser/ui/app_list/app_list_syncable_service.cc [modify] https://crrev.com/6b9da1b9550a2bc39517e4a41caedddded7438c8/chrome/common/chrome_switches.cc [modify] https://crrev.com/6b9da1b9550a2bc39517e4a41caedddded7438c8/chrome/common/chrome_switches.h
,
May 29 2017
,
Aug 1 2017
,
Jan 22 2018
|
||||||
►
Sign in to add a comment |
||||||
Comment 1 by emaxx@chromium.org
, Apr 7 2017Owner: emaxx@chromium.org
Status: Assigned (was: Untriaged)