New issue
Advanced search Search tips

Issue 709602 link

Starred by 3 users

Issue metadata

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



Sign in to add a comment

DCHECK hits when using --disable-extensions

Project Member Reported by emaxx@chromium.org, Apr 7 2017

Issue description

Chrome 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".
 

Comment 1 by emaxx@chromium.org, Apr 7 2017

Cc: -emaxx@chromium.org
Owner: emaxx@chromium.org
Status: Assigned (was: Untriaged)
I'll maybe look into this together with other --disable-extensions cleanup.

Comment 2 by emaxx@chromium.org, 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?

Comment 3 by emaxx@chromium.org, May 23 2017

Cc: calamity@chromium.org benwells@chromium.org
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
Cc: xiy...@chromium.org
Hmm, sorry I don't remember much about the drive app integration. Adding xiyuan who might know more.

Comment 5 by xiy...@chromium.org, 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.
Project Member

Comment 6 by bugdroid1@chromium.org, 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

Comment 7 by emaxx@chromium.org, May 29 2017

Status: Fixed (was: Assigned)

Comment 8 by dchan@chromium.org, Aug 1 2017

Labels: VerifyIn-61

Comment 9 by dchan@chromium.org, Jan 22 2018

Status: Archived (was: Fixed)

Sign in to add a comment