NOTREACHED() hit in schema_registry.cc when chromoting |
|||||||||||
Issue descriptionStacktrace: [15304:15304:0902/175658:FATAL:schema_registry.cc(58)] Check failed: false. #0 0x7f3b218e42ae base::debug::StackTrace::StackTrace() #1 0x7f3b21904e8b logging::LogMessage::~LogMessage() #2 0x7f3b1ddf792e policy::SchemaRegistry::UnregisterComponent() #3 0x7f3b22b19db8 extensions::ManagedValueStoreCache::ExtensionTracker::OnExtensionUninstalled() #4 0x7f3b220cc81e extensions::ExtensionRegistry::TriggerOnUninstalled() #5 0x7f3b22a52ea5 ExtensionService::UninstallExtension() #6 0x7f3b22a4eec4 ExtensionService::CheckExternalUninstall() #7 0x7f3b22a54fc0 ExtensionService::OnAllExternalProvidersReady() #8 0x7f3b22a5514e ExtensionService::OnExternalProviderReady() #9 0x7f3b22a69304 extensions::ExternalProviderImpl::SetPrefs() #10 0x7f3b22b5544e extensions::ExternalLoader::LoadFinished() #11 0x7f3b218e4e06 base::debug::TaskAnnotator::RunTask() #12 0x7f3b2190f855 base::MessageLoop::RunTask() #13 0x7f3b2190fbb8 base::MessageLoop::DeferOrRunPendingTask() #14 0x7f3b2190ff6b base::MessageLoop::DoWork() #15 0x7f3b21911f7a base::(anonymous namespace)::WorkSourceDispatch() #16 0x7f3b1b06fe04 g_main_context_dispatch #17 0x7f3b1b070048 <unknown> #18 0x7f3b1b0700ec g_main_context_iteration #19 0x7f3b21911cd6 base::MessagePumpGlib::Run() #20 0x7f3b2190f351 base::MessageLoop::RunHandler() #21 0x7f3b2193c560 base::RunLoop::Run() #22 0x7f3b22519b4a ChromeBrowserMainParts::MainMessageLoopRun() #23 0x7f3b1f17ec69 content::BrowserMainLoop::RunMainMessageLoopParts() #24 0x7f3b1f182378 content::BrowserMainRunnerImpl::Run() #25 0x7f3b1f179f9e content::BrowserMain() #26 0x7f3b1fa8089e content::RunNamedProcessTypeMain() Note this only ever happens when chromoting, and I usually get around this by just removing the NOTREACHED() locally :( ccing OWNERS because I have no idea what component this is in.
,
Sep 5 2016
https://cs.chromium.org/chromium/src/components/policy/core/common/schema_registry.cc?q=schema_registry.cc&sq=package:chromium&dr&l=58 It's uninstalling an extension that wasn't mapped before. Seems like ExtensionService::OnAllExternalProvidersReady is triggering delayed notifications of uninstalls. AFAICS, this can be safely ignored.
,
Sep 5 2016
OK, we should just switch this to a DLOG(WARNING) then. Putting on my plate for a future noogler.
,
Sep 5 2016
Thought a bit more about this. Hitting this NOTREACHED() means that we're seeing an extension getting uninstalled that we didn't see getting installed in the first place. 1. maybe an install notification was missed (meaning that we aren't correctly tracking all installed extensions) 2. or this ran on startup before we got a list of all installed extensions (more likely, given that OnAllExternalProvidersReady is called once on startup. We should have a list of installed extensions before getting notified of any uninstalls.) I think it's (2) and that's not a big problem if confirmed. (1) would be a real bug somewhere else.
,
Sep 6 2016
Is there anything I can do to help debug when this happens to me? It isn't always reproducible but when it is, it does tend to waste my time rebuilding / etc so I would be happy to help out investigating a fix.
,
Sep 7 2016
Try logging the ID of the extension that caused the problem, and log the list of all the extensions known to the SchemaRegistry at that time. This could confirm that the SchemaRegistry is just getting notified of an uninstall before it gets the initial list of installed extensions. If that's the case, the fix would be to either initialize that list earlier, or to delay the unregistration. Seems like this is the problem: https://cs.chromium.org/chromium/src/chrome/browser/extensions/extension_service.cc?sq=package:chromium&dr=C&rcl=1473160695&l=1334 Is the problematic extension being installed via a policy? If so then this is a huge bug: the ExtensionService thinks that the extension isn't being claimed anymore by any extension loader! This means that extensions installed by policy may be flakily uninstalled at startup. However, OnAllExternalProvidersReady() is blocked until the policy_extension_loader is done, so this should never happen. It may hint at a severe bug in there though.
,
Sep 7 2016
,
Sep 7 2016
This just happened again to me this morning. The id of the failing component is: id: noondiphcddnnabmjcihcjfbhfklnnep domain: POLICY_DOMAIN_EXTENSIONS The only other component known in the schema_map_ is the POLICY_DOMAIN_CHROME which has the empty string as an id. Please let me know if I've left something out. Is there a way to see human readable extension ids?
,
Sep 7 2016
It's the Google Password Alert extension: https://chrome.google.com/webstore/detail/password-alert/noondiphcddnnabmjcihcjfbhfklnnep?hl=en And about:policy shows that it's being force-installed. So we do have a problem that force-installed extensions are not getting reported to the ExtensionService before OnAllExternalProvidersReady() is fired, which means that the policy loader is becoming ready too early. This is a serious bug!
,
Sep 7 2016
oh dang :( Let me know if there's more I can do to help out.
,
Sep 7 2016
So sounds like Extensions system is firing OnAllExternalProvidersReady() prematurely when chromoting. Anyone on chromoting or extensions team able to look at this?
,
Sep 7 2016
Hi,
The phrase "when chromoting" is ambiguous because it could apply to either the client or the host end of the Chromoting connection.
I will guess that it applies to the Host end in this case, because the platform is marked as Linux, and Chromoting sets up a virtual desktop session that is separate from the main physical session, and causes Chrome to run with a different profile data directory.
The mere fact of running in a separate profile may explain why the problem is seen only in the Chromoting session.
To isolate Chromoting as the actual cause, you would need to run Chrome with the same profile directory ('--user-data-dir=/some/dir') both inside and outside the virtual Chromoting session.
,
Sep 8 2016
csharrison, if you want to help debug this, can you try Lambros's suggestion?
,
Sep 8 2016
Yes I can try this. I may not have time to do it right away though. Is there a simple way to see what my profile directory is when running chrome? I'm guessing the best way is to set my profile directory outside of chromoting to the directory used inside chromoting.
,
Sep 8 2016
If you have Chrome successfully running, you can browse to chrome://version/ and it will appear under Profile Path (I think you go up 1 level for the user-data-dir). In Chromoting, we set $CHROME_USER_DATA_DIR to ~/.config/chrome-remote-desktop/chrome-profile . If you want to run Chrome against a particular user-data-dir, you can provide it on the Chrome command-line as --user-data-dir=/path/to/dir (or you can set $CHROME_USER_DATA_DIR)
,
Oct 10 2016
,
Oct 10 2016
I've merged issue 642362 that is also about hitting this NOTREACHED. I think, the root cause is probably the same as in this bug. I put some results of my investigation into the bug description. Also there's another easily reproducible way to hit this NOTREACHED: 1. Set up a preference file that prescribes to force install an extension, e.g.: create /usr/share/chromium/extensions/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json (correct the path if you use stable Chrome and change the extension id to any existing one) with the following contents: {"external_update_url":"https://clients2.google.com/service/update2/crx"} 2. Run Chrome. The extension should be force installed. 3. Close Chrome. Delete the preference file created in step 1. 4. Run Chrome. The NOTREACHED statement will be hit.
,
Oct 18 2016
I haven't hit this in a long time, and it looks like #17 has a repro, so I'm moving myself to cc.
,
Oct 18 2017
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue. Sorry for the inconvenience if the bug really should have been left as Available. If you change it back, also remove the "Hotlist-Recharge-Cold" label. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Oct 19 2017
,
Oct 20 2017
Dropping into enterprise triage queue.
,
Oct 20 2017
,
Dec 8 2017
|
|||||||||||
►
Sign in to add a comment |
|||||||||||
Comment 1 by atwilson@chromium.org
, Sep 5 2016