New issue
Advanced search Search tips

Issue 878653 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Sep 17
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Crash: EasyUnlockServiceRegular does not wait for DeviceSyncClient to be ready

Project Member Reported by alemate@chromium.org, Aug 29

Issue description

Latest ToT (c2a89e2c51ea4bb1b8de6aa40acc5a65d0f6c8f9), EVE device. Debug official build.

[9643:9643:0828/205824.278402:FATAL:device_sync_client_impl.cc(100)] Check failed: is_ready(). 
#0 0x56c73ed33b98 base::debug::StackTrace::StackTrace()
#1 0x56c73ead64cc base::debug::StackTrace::StackTrace()
#2 0x56c73eb1ee9a logging::LogMessage::~LogMessage()
#3 0x56c73be5a69e chromeos::device_sync::DeviceSyncClientImpl::GetSyncedDevices()
#4 0x56c73b72ca96 chromeos::EasyUnlockServiceRegular::GetUnlockKeys()
#5 0x56c73b7320e3 chromeos::EasyUnlockServiceRegular::InitializeInternal()
#6 0x56c73b7218cc chromeos::EasyUnlockService::InitializeOnAppManagerReady()
#7 0x56c734f6adef _ZN4base8internal13FunctorTraitsIMN3net16HostResolverImpl8ProcTaskEFvvEvE6InvokeIS6_NS_7WeakPtrIS4_EEJEEEvT_OT0_DpOT1_
#8 0x56c73b728aca _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIRKMN8chromeos17EasyUnlockServiceEFvvERKNS_7WeakPtrIS5_EEJEEEvOT_OT0_DpOT1_
#9 0x56c73b728a60 _ZN4base8internal7InvokerINS0_9BindStateIMN8chromeos17EasyUnlockServiceEFvvEJNS_7WeakPtrIS4_EEEEEFvvEE7RunImplIRKS6_RKNSt3__15tupleIJS8_EEEJLm0EEEEvOT_OT0_NSF_16integer_sequenceImJXspT1_EEEE
#10 0x56c73b72899c _ZN4base8internal7InvokerINS0_9BindStateIMN8chromeos17EasyUnlockServiceEFvvEJNS_7WeakPtrIS4_EEEEEFvvEE3RunEPNS0_13BindStateBaseE
#11 0x56c734fed05c _ZNO4base12OnceCallbackIFvvEE3RunEv
#12 0x56c73ed7e1a8 base::debug::TaskAnnotator::RunTask()
#13 0x56c73eb39136 base::MessageLoop::RunTask()
#14 0x56c73eb394de base::MessageLoop::DeferOrRunPendingTask()
#15 0x56c73eb399d9 base::MessageLoop::DoWork()
#16 0x56c73ed73a35 base::MessagePumpLibevent::Run()
#17 0x56c73eb3882b base::MessageLoop::Run()
#18 0x56c73ebbaaed base::RunLoop::Run()
#19 0x56c73dd77fa3 ChromeBrowserMainParts::MainMessageLoopRun()
#20 0x56c73840d811 content::BrowserMainLoop::RunMainMessageLoopParts()
#21 0x56c738415eb0 content::BrowserMainRunnerImpl::Run()
#22 0x56c73840055b content::BrowserMain()
#23 0x56c73dd40217 content::RunBrowserProcessMain()
#24 0x56c73dd42b96 content::ContentMainRunnerImpl::Run()
#25 0x56c73dd376bc content::ContentServiceManagerMainDelegate::RunEmbedderProcess()
#26 0x56c73dd5a84a service_manager::Main()
#27 0x56c73dd3dbb3 content::ContentMain()
#28 0x56c734e611b8 ChromeMain
#29 0x56c734e610a2 main
#30 0x7f6879181736 __libc_start_main
#31 0x56c734e60f49 _start

 
Labels: Hotlist-ConOps-CrOS
Owner: khorimoto@chromium.org
Labels: M-70
Status: Started (was: Assigned)
Summary: Crash: EasyUnlockServiceRegular does not wait for DeviceSyncClient to be ready (was: Crash in easy unlock on sign-in)
Components: UI>ProximityAuth
I have a CL which fixes the crash: https://chromium-review.googlesource.com/c/chromium/src/+/1195931

However, EasyUnlockServiceRegular should also be updated so that it waits until DeviceSyncClient is ready before trying to access its synced devices. Once the CL which fixes this crash lands, we should leave this bug open so that the correct fix can be implemented within EasyUnlock.
Project Member

Comment 6 by bugdroid1@chromium.org, Aug 29

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

commit 6f452dfe25f06aad95744e175e6d292881c6a457
Author: Kyle Horimoto <khorimoto@google.com>
Date: Wed Aug 29 22:15:27 2018

[CrOS MultiDevice] Remove two unnecessary DCHECK()s.

These DCHECK()s cause a crash on login when debug mode is enabled (see
 https://crbug.com/878653 ).

Bug:  878653 
Change-Id: Iae62dc0bd75018a175299efbae3cb616ae21bc5c
Reviewed-on: https://chromium-review.googlesource.com/1195931
Reviewed-by: Alexander Alekseev <alemate@chromium.org>
Commit-Queue: Kyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#587320}
[modify] https://crrev.com/6f452dfe25f06aad95744e175e6d292881c6a457/chromeos/services/device_sync/public/cpp/device_sync_client_impl.cc

Owner: hansberry@chromium.org
Status: Assigned (was: Started)
Assigning to hansberry@ to fix the rest of the issue (see comment #5).
Kyle, does the fix need to be merged anywhere?
If this is what is causing the crash on Eve, then yes, it needs to be merged back to 69 at least.
These are DCHECKs that were removed. This crash is happening on user devices, which wouldn't have DCHECKs enabled.

So then maybe this isn't the crash that folks are seeing or that crash is an additional one?
Ah nevermind, this isn't the M-69 blocking crash. That crash is tracked here: https://bugs.chromium.org/p/chromium/issues/detail?id=878002

Labels: -Pri-1 -M-70 -Hotlist-ConOps-CrOS M-71 Pri-2
This is not a launch-blocker -- it was a crash only in debug mode, which no longer crashes after its culprit DCHECKs were removed. Downgrading priority.

As a sidenote, the correct way to resolve this issue will be to put the culprit DCHECKs back, and remove this line [1]. This line is actually not necessary, and was mistakenly placed there. I will send out this proposed fix once our current crunch to get launch blockers in 70 has passed.

1) https://cs.chromium.org/chromium/src/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc?q=easyunlockserviceregular&sq=package:chromium&dr=CSs&l=519
Project Member

Comment 13 by bugdroid1@chromium.org, Sep 17

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

commit 196454e3fde49ffea3b580a520a8778e2133982c
Author: Ryan Hansberry <hansberry@chromium.org>
Date: Mon Sep 17 21:58:03 2018

Smart Lock: Remove unnecessary and incorrect call to DeviceSyncClient.

Remove call to DeviceSyncClient::GetSyncedDevices() in
EasyUnlockServiceRegular. This call was incorrect because it didn't
wait for DeviceSyncClient::Observer::OnReady(), but is also
unnecessary because EasyUnlockServiceRegular's override of OnReady()
will call GetSyncedDevices() anyway.

This CL also puts back DCHECKs within DeviceSyncClient which were
removed in [1]. These DCHECKs should remain present to continue
catching incorrect calls such as this one.

1) https://chromium-review.googlesource.com/c/chromium/src/+/1195931

R=jhawkins@chromium.org, khorimoto@chromium.org

Bug:  878653 
Change-Id: Ib13668063be89b3856076c1476cb853215f12f22
Reviewed-on: https://chromium-review.googlesource.com/1218342
Reviewed-by: Kyle Horimoto <khorimoto@chromium.org>
Reviewed-by: James Hawkins <jhawkins@chromium.org>
Commit-Queue: Ryan Hansberry <hansberry@chromium.org>
Cr-Commit-Position: refs/heads/master@{#591835}
[modify] https://crrev.com/196454e3fde49ffea3b580a520a8778e2133982c/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_regular.cc
[modify] https://crrev.com/196454e3fde49ffea3b580a520a8778e2133982c/chromeos/services/device_sync/public/cpp/device_sync_client_impl.cc

Status: Fixed (was: Assigned)

Sign in to add a comment