New issue
Advanced search Search tips

Issue 753823 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug
Proj-Servicification

Blocking:
issue 557406



Sign in to add a comment

ash: Fix ash shelf preference initialization

Project Member Reported by thanhph@chromium.org, Aug 9 2017

Issue description

Run chrome --mash crashes right away. It may relate to PrefService. This is on ToT today.

[5577:5584:0809/105821.187057:579040312620:INFO:service_process_launcher.cc(191)] Launched child process pid=5589, instance=, name=ui, user_id=faa4c086-94b2-41b4-9a1e-75fe1f367ab6
[5577:5588:0809/105821.189175:579040314311:INFO:service_process_launcher.cc(191)] Launched child process pid=5591, instance=, name=content_packaged_services, user_id=8e951a38-6154-4798-adb0-e64129fd8f5a
[5577:5584:0809/105821.191790:579040316932:INFO:service_process_launcher.cc(191)] Launched child process pid=5592, instance=, name=ash, user_id=505C0EE9-3013-43C0-82B0-A84F50CF8D84
[5577:5584:0809/105821.194250:579040319388:INFO:service_process_launcher.cc(191)] Launched child process pid=5593, instance=, name=quick_launch, user_id=505C0EE9-3013-43C0-82B0-A84F50CF8D84
[5577:5584:0809/105821.705362:579040830509:INFO:service_process_launcher.cc(191)] Launched child process pid=5609, instance=, name=font_service, user_id=505C0EE9-3013-43C0-82B0-A84F50CF8D84
[5591:5591:0809/105821.768844:ERROR:zygote_host_impl_linux.cc(109)] SUID sandbox binary is missing. Won't be able to adjust OOM scores.
[5592:5592:0809/105822.441968:579041567259:ERROR:shell_delegate_mus.cc(113)] Not implemented reached in virtual ash::GPUSupport *ash::ShellDelegateMus::CreateGPUSupport()
[5592:5592:0809/105822.442560:579041567692:ERROR:shell_delegate_mus.cc(102)] Not implemented reached in virtual std::unique_ptr<PaletteDelegate> ash::ShellDelegateMus::CreatePaletteDelegate()
[5592:5592:0809/105822.442622:579041567751:ERROR:shell_delegate_mus.cc(60)] Not implemented reached in virtual void ash::ShellDelegateMus::PreInit()
[5592:5592:0809/105822.635371:579041760503:ERROR:layer_tree_host_impl.cc(2415)] Forcing zero-copy tile initialization as worker context is missing
[5592:5592:0809/105822.652945:579041778076:ERROR:shell_delegate_mus.cc(50)] Not implemented reached in virtual bool ash::ShellDelegateMus::CanShowWindowForUser(aura::Window *) const
[5593:5593:0809/105822.692727:579041818058:ERROR:layer_tree_host_impl.cc(2415)] Forcing zero-copy tile initialization as worker context is missing
Received signal 11 SEGV_MAPERR 000000000020
#0 0x7f2ab1a27d7c base::debug::StackTrace::StackTrace()
#1 0x7f2ab1a27871 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#2 0x7f2ab1ba5330 <unknown>
#3 0x7f2ab031ff33 PrefService::Preference::HasUserSetting()
#4 0x559904b96471 [5592:5592:0809/105823.290329:579042415460:ERROR:shell_delegate_mus.cc(81)] Not implemented reached in virtual void ash::ShellDelegateMus::ShelfInit()
ChromeLauncherPrefsObserver::CreateIfNecessary()
#5 0x559904b9d74d ChromeLauncherController::Init()
#6 0x559904bb1005 ChromeBrowserMainExtraPartsAsh::PostProfileInit()
#7 0x5599038c5a4a ChromeBrowserMainParts::PostProfileInit()
#8 0x5599038c66bb ChromeBrowserMainPartsLinux::PostProfileInit()
#9 0x5599033dc81f chromeos::ChromeBrowserMainPartsChromeos::PostProfileInit()
#10 0x5599038c4f7b ChromeBrowserMainParts::PreMainMessageLoopRunImpl()
#11 0x5599038c434d ChromeBrowserMainParts::PreMainMessageLoopRun()
#12 0x5599033dba02 chromeos::ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun()
#13 0x7f2aaeff4d91 content::BrowserMainLoop::PreMainMessageLoopRun()
#14 0x7f2aaf3f4fd7 content::StartupTaskRunner::RunAllTasksNow()
#15 0x7f2aaeff321b content::BrowserMainLoop::CreateStartupTasks()
#16 0x7f2aaeff7919 content::BrowserMainRunnerImpl::Initialize()
#17 0x7f2aaeff0817 content::BrowserMain()
#18 0x7f2aaf7f6a88 content::ContentMainRunnerImpl::Run()
#19 0x7f2ab1f6bcb2 service_manager::Main()
#20 0x7f2aaf7f5564 content::ContentMain()
#21 0x559902f54928 ChromeMain
#22 0x7f2aa76ebf45 __libc_start_main
#23 0x559902f54764 <unknown>
  r8: 0000000000000000  r9: 0000000000000015 r10: 0000000000000060 r11: 00007f2aa7854110
 r12: 00007fff8ab14881 r13: 0000000000000015 r14: 00007fff8ab148f8 r15: 0000341344d542c0
  di: 0000000000000000  si: 0000000000000000  bp: 00007fff8ab148e0  bx: 00003413452e1420
  dx: 0000341344cbb440  ax: 0000000000000000  cx: 0000000044d52001  sp: 00007fff8ab14878
  ip: 00007f2ab031ff33 efl: 0000000000010206 cgf: 0000000000000033 erf: 0000000000000004
 trp: 000000000000000e msk: 0000000000000000 cr2: 0000000000000020
[end of stack trace]
Calling _exit(1). Core file will not be generated.
[5577:5577:0809/105823.376812:579042501949:ERROR:chrome_main_delegate.cc(1186)] Main process exiting because service content_packaged_services quit unexpectedly.
[5592:5592:0809/105823.377462:579042502595:ERROR:shell_delegate_mus.cc(64)] Not implemented reached in virtual void ash::ShellDelegateMus::PreShutdown()
[5592:5592:0809/105823.388766:579042513901:ERROR:shell_delegate_mus.cc(85)] Not implemented reached in virtual void ash::ShellDelegateMus::ShelfShutdown()

 
Blocking: 723792
Description: Show this description
Cc: jamescook@chromium.org
Owner: msw@chromium.org
Status: Assigned (was: Available)
msw recently changed chrome launcher controller, maybe his code?

Comment 4 by msw@chromium.org, Aug 9 2017

Status: Started (was: Assigned)
Yes! I'll have a fix shortly, we can revert my CL if we want the quickest fix:
https://chromium-review.googlesource.com/c/602737

Comment 5 by msw@chromium.org, Aug 9 2017

Workaround fix up for review: https://chromium-review.googlesource.com/c/608613
Project Member

Comment 6 by bugdroid1@chromium.org, Aug 9 2017

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

commit c95ebb5dfc53040866c9e5a4579cde2e479cbb3d
Author: Michael Wasserman <msw@chromium.org>
Date: Wed Aug 09 16:31:58 2017

mash: Workaround crash checking unregistered preference.

Bug: 753823
Change-Id: If5b6ac0c52b0a69b0111f689fdbb3479dfe85106
Reviewed-on: https://chromium-review.googlesource.com/608613
Reviewed-by: James Cook <jamescook@chromium.org>
Commit-Queue: Michael Wasserman <msw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493015}
[modify] https://crrev.com/c95ebb5dfc53040866c9e5a4579cde2e479cbb3d/chrome/browser/ui/ash/chrome_launcher_prefs.cc

Comment 7 by msw@chromium.org, Aug 9 2017

Blocking: -723792 557406
Components: -MUS -Internals>MUS UI>Shell>Shelf
Summary: mash: Fix ChromeLauncherPrefsObserver for ash prefs (was: Chrome --mash currently crashes)
The crash is fixed, re-targeting to fix ChromeLauncherPrefsObserver in mash.
(it should move to ash or wait for the ash prefs registration to propagate)

Comment 8 by msw@chromium.org, Aug 9 2017

Labels: -Pri-1 Pri-2
Blocking: -557406
Chrome --mash starts now. Thanks Mike!

Comment 10 by msw@chromium.org, Aug 9 2017

Blocking: 557406
No problem, thanks for reporting! This should still block my shelf tracking bug.
Project Member

Comment 11 by bugdroid1@chromium.org, Oct 16 2017

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

commit 7e440443c0dd5d86061c4084e0964605c8724c2b
Author: Mike Wasserman <msw@chromium.org>
Date: Mon Oct 16 16:59:11 2017

ash: Make local shelf pref init more reliable on first sign-in.

Nix ChromeLauncherPrefsObserver; it usually wasn't created, afaict.
Ash prefs were usually registered with chrome too late in local tests.
(they are available on first sign-in for some unknown timing reason)

Inline behavior in ChromeLauncherController::OnIsSyncingChanged.
Wait for OnIsSyncingChanged to check for pref registration and init.
Timing still isn't guaranteed, but this moves the needle in our favor.

TODO: Init prefs in Ash for guaranteed ordering - crbug.com/774657

Bug: 753823,774657
Change-Id: Ia9a0e4a8a512d50a414b331f39ad72194d1357f6
Reviewed-on: https://chromium-review.googlesource.com/717476
Commit-Queue: Michael Wasserman <msw@chromium.org>
Reviewed-by: James Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509079}
[modify] https://crrev.com/7e440443c0dd5d86061c4084e0964605c8724c2b/ash/shelf/shelf_controller.cc
[modify] https://crrev.com/7e440443c0dd5d86061c4084e0964605c8724c2b/chrome/browser/ui/ash/chrome_launcher_prefs.cc
[modify] https://crrev.com/7e440443c0dd5d86061c4084e0964605c8724c2b/chrome/browser/ui/ash/chrome_launcher_prefs.h
[modify] https://crrev.com/7e440443c0dd5d86061c4084e0964605c8724c2b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc
[modify] https://crrev.com/7e440443c0dd5d86061c4084e0964605c8724c2b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.h

Comment 12 by msw@chromium.org, Oct 16 2017

Components: Internals>Preferences>Service
Labels: -Proj-Mustash Proj-Mustash-Mash OS-Chrome
Status: Assigned (was: Started)
Summary: ash: Fix ash shelf preference initialization (was: mash: Fix ChromeLauncherPrefsObserver for ash prefs)
Fixing this further is blocked on Issue 774657. Here's an updated summary of the bug:

Ash owns and registers shelf preferences, and Chrome sees those as foreign prefs (eventually).
Chrome inits local shelf prefs from synced values when a user signs-in to a device for the first time.
(Ash can't do it because we haven't plumbed OnIsSyncingChanged to the preferences service clients)
This is problematic, because Chrome may not see the foreign pref registration before syncing begins.
(rare in my local testing, but we should still avoid timing issues and move the pref init to Ash)
See the comments around InitLocalPref in chrome_launcher_prefs.[h|cc]:

// Init a local pref from a synced pref, if the local pref has no user setting.
// This is used to init shelf alignment and auto-hide on the first user sync.
// The goal is to apply the last elected shelf alignment and auto-hide values
// when a user signs in to a new device for the first time. Otherwise, shelf
// properties are persisted per-display/device. The local prefs are initialized
// with synced (or default) values when when syncing begins, to avoid syncing
// shelf prefs across devices after the very start of the user's first session.
void InitLocalPref(PrefService* prefs, const char* local, const char* synced);

  // Ash's prefs *should* have been propagated to Chrome by now, but maybe not.
  // This belongs in Ash, but it can't observe syncing changes: crbug.com/774657
Labels: Not-Touch-Friendly-Launcher
Components: Internals>Services>Ash
Labels: -Proj-Mustash-Mash

Comment 15 by dxie@chromium.org, May 30 2018

Labels: Hotlist-KnownIssue
Components: -UI>Shell>Shelf

Sign in to add a comment