New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 915981 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 8
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug



Sign in to add a comment

Smart Lock: Metrics NOTREACHED() hit during sign-in

Project Member Reported by khorimoto@chromium.org, Dec 18

Issue description

Repro: Use Smart Lock sign-in and to sign into the machine.

Chrome crashes with the stack trace below, but this isn't simply a DCHECK() failure; this results in kUnknownState being logged to metrics, when it really should have been an appropriate value.

#0  0x000056140d383bda in logging::LogMessage::~LogMessage()::$_2::operator()() const () at ../../base/logging.cc:874
#1  logging::LogMessage::~LogMessage () at ../../base/logging.cc:874
#2  0x000056140b59974c in chromeos::EasyUnlockService::GetSmartUnlockPasswordAuthEvent () at ../../chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc:656
#3  0x000056140b59e715 in chromeos::EasyUnlockServiceSignin::RecordPasswordLoginEvent () at ../../chrome/browser/chromeos/login/easy_unlock/easy_unlock_service_signin_chromeos.cc:302
#4  0x000056140b5b3993 in chromeos::(anonymous namespace)::RecordPasswordLoginEvent () at ../../chrome/browser/chromeos/login/existing_user_controller.cc:192
#5  chromeos::ExistingUserController::PerformLogin () at ../../chrome/browser/chromeos/login/existing_user_controller.cc:630
#6  0x000056140b5b3495 in chromeos::ExistingUserController::DoLogin () at ../../chrome/browser/chromeos/login/existing_user_controller.cc:1742
#7  0x000056140b5b8304 in base::internal::FunctorTraits<void (chromeos::ExistingUserController::*)(chromeos::UserContext const&, chromeos::SigninSpecifics const&), void>::Invoke<void (chromeos::ExistingUserController::*)(chromeos::UserContext const&, chromeos::SigninSpecifics const&), base::WeakPtr<chromeos::ExistingUserController> const&, chromeos::UserContext const&, chromeos::SigninSpecifics const&> () at ../../base/bind_internal.h:516
#8  base::internal::InvokeHelper<true, void>::MakeItSo<void (chromeos::ExistingUserController::* const&)(chromeos::UserContext const&, chromeos::SigninSpecifics const&), base::WeakPtr<chromeos::ExistingUserController> const&, chromeos::UserContext const&, chromeos::SigninSpecifics const&> () at ../../base/bind_internal.h:636
#9  base::internal::Invoker<base::internal::BindState<void (chromeos::ExistingUserController::*)(chromeos::UserContext const&, chromeos::SigninSpecifics const&), base::WeakPtr<chromeos::ExistingUserController>, chromeos::UserContext, chromeos::SigninSpecifics>, void ()>::RunImpl<void (chromeos::ExistingUserController::* const&)(chromeos::UserContext const&, chromeos::SigninSpecifics const&), std::__1::tuple<base::WeakPtr<chromeos::ExistingUserController>, chromeos::UserContext, chromeos::SigninSpecifics> const&, 0ul, 1ul, 2ul>(void (chromeos::ExistingUserController::* const&)(chromeos::UserContext const&, chromeos::SigninSpecifics const&), std::__1::tuple<base::WeakPtr<chromeos::ExistingUserController>, chromeos::UserContext, chromeos::SigninSpecifics> const&, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) () at ../../base/bind_internal.h:689
#10 base::internal::Invoker<base::internal::BindState<void (chromeos::ExistingUserController::*)(chromeos::UserContext const&, chromeos::SigninSpecifics const&), base::WeakPtr<chromeos::ExistingUserController>, chromeos::UserContext, chromeos::SigninSpecifics>, void ()>::Run(base::internal::BindStateBase*) () at ../../base/bind_internal.h:671
#11 0x000056140b5b7ddf in base::OnceCallback<void ()>::Run() && () at ../../base/callback.h:99
#12 chromeos::ExistingUserController::ContinueLoginWhenCryptohomeAvailable(base::OnceCallback<void ()>, bool) () at ../../chrome/browser/chromeos/login/existing_user_controller.cc:1609
#13 0x000056140b3e2013 in base::internal::FunctorTraits<void (arc::ArcBluetoothBridge::*)(base::OnceCallback<void (arc::mojom::BluetoothAdapterState)>, bool) const, void>::Invoke<void (arc::ArcBluetoothBridge::*)(base::OnceCallback<void (arc::mojom::BluetoothAdapterState)>, bool) const, base::WeakPtr<arc::ArcBluetoothBridge> const&, base::RepeatingCallback<void (arc::mojom::BluetoothAdapterState)> const&, bool const&>(void (arc::ArcBluetoothBridge::*)(base::OnceCallback<void (arc::mojom::BluetoothAdapterState)>, bool) const, base::WeakPtr<arc::ArcBluetoothBridge> const&, base::RepeatingCallback<void (arc::mojom::BluetoothAdapterState)> const&, bool const&) ()
    at ../../base/bind_internal.h:531
#14 0x000056140b5b86fe in base::internal::InvokeHelper<true, void>::MakeItSo<void (chromeos::ExistingUserController::* const&)(base::OnceCallback<void ()>, bool), base::WeakPtr<chromeos::ExistingUserController> const&, base::RepeatingCallback<void ()> const&, bool>(void (chromeos::ExistingUserController::* const&)(base::OnceCallback<void ()>, bool), base::WeakPtr<chromeos::ExistingUserController> const&, base::RepeatingCallback<void ()> const&, bool&&) () at ../../base/bind_internal.h:636
#15 base::internal::Invoker<base::internal::BindState<void (chromeos::ExistingUserController::*)(base::OnceCallback<void ()>, bool), base::WeakPtr<chromeos::ExistingUserController>, base::RepeatingCallback<void ()> >, void (bool)>::RunImpl<void (chromeos::ExistingUserController::* const&)(base::OnceCallback<void ()>, bool), std::__1::tuple<base::WeakPtr<chromeos::ExistingUserController>, base::RepeatingCallback<void ()> > const&, 0ul, 1ul>(void (chromeos::ExistingUserController::* const&)(base::OnceCallback<void ()>, bool), std::__1::tuple<base::WeakPtr<chromeos::ExistingUserController>, base::RepeatingCallback<void ()> > const&, std::__1::integer_sequence<unsigned long, 0ul, 1ul>, bool&&) () at ../../base/bind_internal.h:689
#16 base::internal::Invoker<base::internal::BindState<void (chromeos::ExistingUserController::*)(base::OnceCallback<void ()>, bool), base::WeakPtr<chromeos::ExistingUserController>, base::RepeatingCallback<void ()> >, void (bool)>::Run(base::internal::BindStateBase*, bool) () at ../../base/bind_internal.h:671
#17 0x000056140e280232 in base::OnceCallback<void (bool)>::Run(bool) && () at ../../base/callback.h:99
#18 dbus::ObjectProxy::RunWaitForServiceToBeAvailableCallbacks () at ../../dbus/object_proxy.cc:761
#19 0x00005614099e686f in base::internal::FunctorTraits<void (chromeos::CryptohomeAuthenticator::*)(bool), void>::Invoke<void (chromeos::CryptohomeAuthenticator::*)(bool), scoped_refptr<chromeos::CryptohomeAuthenticator>, bool> () at ../../base/bind_internal.h:516
#20 base::internal::InvokeHelper<false, void>::MakeItSo<void (chromeos::CryptohomeAuthenticator::*)(bool), scoped_refptr<chromeos::CryptohomeAuthenticator>, bool> () at ../../base/bind_internal.h:616
#21 base::internal::Invoker<base::internal::BindState<void (chromeos::CryptohomeAuthenticator::*)(bool), scoped_refptr<chromeos::CryptohomeAuthenticator>, bool>, void ()>::RunImpl<void (chromeos::CryptohomeAuthenticator::*)(bool), std::__1::tuple<scoped_refptr<chromeos::CryptohomeAuthenticator>, bool>, 0ul, 1ul>(void (chromeos::CryptohomeAuthenticator::*&&)(bool), std::__1::tuple<scoped_refptr<chromeos::CryptohomeAuthenticator>, bool>&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) () at ../../base/bind_internal.h:689
#22 base::internal::Invoker<base::internal::BindState<void (chromeos::CryptohomeAuthenticator::*)(bool), scoped_refptr<chromeos::CryptohomeAuthenticator>, bool>, void ()>::RunOnce(base::internal::BindStateBase*) () at ../../base/bind_internal.h:658
#23 0x000056140d450327 in base::OnceCallback<void ()>::Run() && () at ../../base/callback.h:99
#24 base::debug::TaskAnnotator::RunTask () at ../../base/debug/task_annotator.cc:99
#25 0x000056140d38d53f in base::MessageLoopImpl::RunTask () at ../../base/message_loop/message_loop_impl.cc:374
#26 0x000056140d38dc32 in base::MessageLoopImpl::DeferOrRunPendingTask () at ../../base/message_loop/message_loop_impl.cc:385
#27 base::MessageLoopImpl::DoWork () at ../../base/message_loop/message_loop_impl.cc:473
#28 0x000056140d44c439 in base::MessagePumpLibevent::Run () at ../../base/message_loop/message_pump_libevent.cc:210
#29 0x000056140d38d015 in base::MessageLoopImpl::Run () at ../../base/message_loop/message_loop_impl.cc:326
#30 0x000056140d3b6836 in base::RunLoop::Run () at ../../base/run_loop.cc:102
#31 0x000056140ced0178 in ChromeBrowserMainParts::MainMessageLoopRun () at ../../chrome/browser/chrome_browser_main.cc:1852
#32 0x000056140a5c8014 in content::BrowserMainLoop::RunMainMessageLoopParts () at ../../content/browser/browser_main_loop.cc:999
#33 0x000056140a5ca883 in content::BrowserMainRunnerImpl::Run () at ../../content/browser/browser_main_runner_impl.cc:165
#34 0x000056140a5c488f in content::BrowserMain () at ../../content/browser/browser_main.cc:47
#35 0x000056140cec10ad in content::RunBrowserProcessMain () at ../../content/app/content_main_runner_impl.cc:545
#36 content::ContentMainRunnerImpl::RunServiceManager () at ../../content/app/content_main_runner_impl.cc:954
#37 0x000056140cec0c76 in content::ContentMainRunnerImpl::Run () at ../../content/app/content_main_runner_impl.cc:868
#38 0x000056140cec8545 in service_manager::Main () at ../../services/service_manager/embedder/main.cc:460
#39 0x000056140cebf061 in content::ContentMain () at ../../content/app/content_main.cc:19
#40 0x0000561409334c5f in ChromeMain () at ../../chrome/app/chrome_main.cc:102
#41 0x000078d2e0e63a94 in __libc_start_main (main=0x561409334bc0 <main()>, argc=34, argv=0x7ffc57568628, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffc57568618) at ../csu/libc-start.c:308
#42 0x0000561409334a8a in _start ()

 
Status: Started (was: Assigned)
Owner: hsuregan@chromium.org
Project Member

Comment 3 by bugdroid1@chromium.org, Jan 4

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

commit a31c6b969dd19dbc395c46dacfb9852ce6612e91
Author: Regan Hsu <hsuregan@chromium.org>
Date: Fri Jan 04 18:52:51 2019

[CrOS MultiDevice] Fix crash when password entered on SL sign-in.

When smart lock is enabled, but the lock screen is disabled on the host,
the smart lock metrics recorder crashes as the user enters their
password.  This is because the case PHONE_NOT_LOCKABLE -- which details
this event -- in the ScreenlockState is not considered in the function
which records these metrics, defaulting in a NOTREACHED().

Bug:  915981 
Change-Id: If5a022fcea78e6a46739612e3e101a3eec38a399
Reviewed-on: https://chromium-review.googlesource.com/c/1383201
Reviewed-by: Ryan Hansberry <hansberry@chromium.org>
Reviewed-by: Steven Holte <holte@chromium.org>
Commit-Queue: Regan Hsu <hsuregan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#620017}
[modify] https://crrev.com/a31c6b969dd19dbc395c46dacfb9852ce6612e91/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
[modify] https://crrev.com/a31c6b969dd19dbc395c46dacfb9852ce6612e91/chromeos/components/proximity_auth/smart_lock_metrics_recorder.h
[modify] https://crrev.com/a31c6b969dd19dbc395c46dacfb9852ce6612e91/tools/metrics/histograms/enums.xml

Status: Fixed (was: Started)

Sign in to add a comment