crypto::GetMacSecurityServicesLock shouldn't be used on non-io-allowed threads. |
|||||
Issue descriptionAs issue 90277 is now fixed, chrome on mac no longer looks up client certs on the io thread. However, it does hold crypto::GetMacSecurityServicesLock around the client cert lookup, so a slow smartcard impl could still cause anything else that tries to acquire the lock to also block. I did some examination of uses, and most currently look safe, except for some of the crypto::AppleKeychain uses. One example where this happens: [68168:775:0719/181058.132292:FATAL:thread_restrictions.cc(38)] Check failed: false. Function marked as IO-only was called from a thread that disallows IO! If this thread really should be allowed to make IO calls, adjust the call to base::ThreadRestrictions::SetIOAllowed() in this thread's startup. If this task is running inside the TaskScheduler, the TaskRunner used to post it needs to have MayBlock() in its TaskTraits. 0 libbase.dylib 0x0000000110ce1e4e base::debug::StackTrace::StackTrace(unsigned long) + 174 1 libbase.dylib 0x0000000110ce1f1d base::debug::StackTrace::StackTrace(unsigned long) + 29 2 libbase.dylib 0x0000000110ce01bc base::debug::StackTrace::StackTrace() + 28 3 libbase.dylib 0x0000000110d7f00f logging::LogMessage::~LogMessage() + 479 4 libbase.dylib 0x0000000110d7c985 logging::LogMessage::~LogMessage() + 21 5 libbase.dylib 0x0000000110fe03b8 base::ThreadRestrictions::AssertIOAllowed() + 168 6 libcrcrypto.dylib 0x00000001149b8399 crypto::GetMacSecurityServicesLock() + 9 7 libcrcrypto.dylib 0x00000001149aba9e crypto::AppleKeychain::FindGenericPassword(void const*, unsigned int, char const*, unsigned int, char const*, unsigned int*, void**, OpaqueSecKeychainItemRef**) const + 78 8 libchrome_dll.dylib 0x0000000105143081 KeychainPassword::GetPassword() const + 177 9 libchrome_dll.dylib 0x00000001051460fa (anonymous namespace)::GetEncryptionKey() + 1530 10 libchrome_dll.dylib 0x0000000105144720 OSCrypt::EncryptString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) + 1376 11 libchrome_dll.dylib 0x00000001077d042b password_manager::HashPasswordManager::EncryptAndSaveToPrefs(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 443 12 libchrome_dll.dylib 0x00000001077cff45 password_manager::HashPasswordManager::SavePasswordHash(std::__1::basic_string<unsigned short, base::string16_char_traits, std::__1::allocator<unsigned short> > const&) + 325 13 libchrome_dll.dylib 0x000000010776af7c password_manager::PasswordStore::SaveSyncPasswordHash(std::__1::basic_string<unsigned short, base::string16_char_traits, std::__1::allocator<unsigned short> > const&) + 108 14 libchrome_dll.dylib 0x00000001077d2244 password_manager::PasswordStoreSigninNotifier::NotifySignin(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 132 15 libchrome_dll.dylib 0x00000001042821a8 password_manager::PasswordStoreSigninNotifierImpl::GoogleSigninSucceededWithPassword(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 40 16 libchrome_dll.dylib 0x00000001051ef749 SigninManager::OnSignedIn() + 2025 17 libchrome_dll.dylib 0x00000001051eeba8 SigninManager::CompletePendingSignin() + 664 18 libchrome_dll.dylib 0x00000001088c5407 OneClickSigninSyncStarter::ConfirmAndSignin() + 343 19 libchrome_dll.dylib 0x00000001088c3bc2 OneClickSigninSyncStarter::OnRegisteredForPolicy(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 498 20 libchrome_dll.dylib 0x00000001088c801f void base::internal::FunctorTraits<void (OneClickSigninSyncStarter::*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), void>::Invoke<base::WeakPtr<OneClickSigninSyncStarter> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(void (OneClickSigninSyncStarter::*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), base::WeakPtr<OneClickSigninSyncStarter> const&&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&&&) + 159 21 libchrome_dll.dylib 0x00000001088c7f75 void base::internal::InvokeHelper<true, void>::MakeItSo<void (OneClickSigninSyncStarter::* const&)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), base::WeakPtr<OneClickSigninSyncStarter> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(void (OneClickSigninSyncStarter::* const&&&)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), base::WeakPtr<OneClickSigninSyncStarter> const&&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&&&) + 133 22 libchrome_dll.dylib 0x00000001088c7ee0 void base::internal::Invoker<base::internal::BindState<void (OneClickSigninSyncStarter::*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), base::WeakPtr<OneClickSigninSyncStarter> >, void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>::RunImpl<void (OneClickSigninSyncStarter::* const&)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), std::__1::tuple<base::WeakPtr<OneClickSigninSyncStarter> > const&, 0ul>(void (OneClickSigninSyncStarter::* const&&&)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), std::__1::tuple<base::WeakPtr<OneClickSigninSyncStarter> > const&&&, base::IndexSequence<0ul>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 112 23 libchrome_dll.dylib 0x00000001088c7e14 base::internal::Invoker<base::internal::BindState<void (OneClickSigninSyncStarter::*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), base::WeakPtr<OneClickSigninSyncStarter> >, void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>::Run(base::internal::BindStateBase*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 84 24 libchrome_dll.dylib 0x00000001071de060 base::Callback<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1>::Run(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const + 96 25 libchrome_dll.dylib 0x0000000103d8894e policy::UserPolicySigninService::RegisterForPolicyWithLoginToken(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, base::Callback<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&) + 990 26 libchrome_dll.dylib 0x00000001088c30ed OneClickSigninSyncStarter::ConfirmSignin(OneClickSigninSyncStarter::ProfileMode, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 1117 27 libchrome_dll.dylib 0x00000001088c70b1 void base::internal::FunctorTraits<void (OneClickSigninSyncStarter::*)(OneClickSigninSyncStarter::ProfileMode, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), void>::Invoke<base::WeakPtr<OneClickSigninSyncStarter> const&, OneClickSigninSyncStarter::ProfileMode const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(void (OneClickSigninSyncStarter::*)(OneClickSigninSyncStarter::ProfileMode, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), base::WeakPtr<OneClickSigninSyncStarter> const&&&, OneClickSigninSyncStarter::ProfileMode const&&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&&&) + 161 28 libchrome_dll.dylib 0x00000001088c6fa5 void base::internal::InvokeHelper<true, void>::MakeItSo<void (OneClickSigninSyncStarter::* const&)(OneClickSigninSyncStarter::ProfileMode, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), base::WeakPtr<OneClickSigninSyncStarter> const&, OneClickSigninSyncStarter::ProfileMode const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(void (OneClickSigninSyncStarter::* const&&&)(OneClickSigninSyncStarter::ProfileMode, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), base::WeakPtr<OneClickSigninSyncStarter> const&&&, OneClickSigninSyncStarter::ProfileMode const&&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&&&) + 133 29 libchrome_dll.dylib 0x00000001088c6f0d void base::internal::Invoker<base::internal::BindState<void (OneClickSigninSyncStarter::*)(OneClickSigninSyncStarter::ProfileMode, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), base::WeakPtr<OneClickSigninSyncStarter>, OneClickSigninSyncStarter::ProfileMode>, void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>::RunImpl<void (OneClickSigninSyncStarter::* const&)(OneClickSigninSyncStarter::ProfileMode, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), std::__1::tuple<base::WeakPtr<OneClickSigninSyncStarter>, OneClickSigninSyncStarter::ProfileMode> const&, 0ul, 1ul>(void (OneClickSigninSyncStarter::* const&&&)(OneClickSigninSyncStarter::ProfileMode, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), std::__1::tuple<base::WeakPtr<OneClickSigninSyncStarter>, OneClickSigninSyncStarter::ProfileMode> const&&&, base::IndexSequence<0ul, 1ul>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 141 30 libchrome_dll.dylib 0x00000001088c6e14 base::internal::Invoker<base::internal::BindState<void (OneClickSigninSyncStarter::*)(OneClickSigninSyncStarter::ProfileMode, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), base::WeakPtr<OneClickSigninSyncStarter>, OneClickSigninSyncStarter::ProfileMode>, void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>::Run(base::internal::BindStateBase*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 68 31 libchrome_dll.dylib 0x0000000101d181cd base::Callback<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1>::Run(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const + 77 32 libchrome_dll.dylib 0x00000001051eba43 SigninManager::StartSignInWithRefreshToken(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, base::Callback<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&) + 611 33 libchrome_dll.dylib 0x00000001088c23da OneClickSigninSyncStarter::OneClickSigninSyncStarter(Profile*, Browser*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OneClickSigninSyncStarter::ProfileMode, OneClickSigninSyncStarter::StartSyncMode, content::WebContents*, OneClickSigninSyncStarter::ConfirmationRequired, GURL const&, GURL const&, base::Callback<void (OneClickSigninSyncStarter::SyncSetupResult), (base::internal::CopyMode)1, (base::internal::RepeatMode)1>) + 2154 34 libchrome_dll.dylib 0x00000001088c33d2 OneClickSigninSyncStarter::OneClickSigninSyncStarter(Profile*, Browser*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OneClickSigninSyncStarter::ProfileMode, OneClickSigninSyncStarter::StartSyncMode, content::WebContents*, OneClickSigninSyncStarter::ConfirmationRequired, GURL const&, GURL const&, base::Callback<void (OneClickSigninSyncStarter::SyncSetupResult), (base::internal::CopyMode)1, (base::internal::RepeatMode)1>) + 306 35 libchrome_dll.dylib 0x00000001088d7179 InlineSigninHelper::CreateSyncStarter(Browser*, content::WebContents*, GURL const&, GURL const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OneClickSigninSyncStarter::ProfileMode, OneClickSigninSyncStarter::StartSyncMode, OneClickSigninSyncStarter::ConfirmationRequired) + 505 36 libchrome_dll.dylib 0x00000001088d66bc InlineSigninHelper::OnClientOAuthSuccessAndBrowserOpened(GaiaAuthConsumer::ClientOAuthResult const&, Profile*, Profile::CreateStatus) + 2268 37 libchrome_dll.dylib 0x00000001088d5d65 InlineSigninHelper::OnClientOAuthSuccess(GaiaAuthConsumer::ClientOAuthResult const&) + 181 38 libchrome_dll.dylib 0x00000001015719aa GaiaAuthFetcher::OnOAuth2TokenPairFetched(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, net::URLRequestStatus const&, int) + 698 39 libchrome_dll.dylib 0x000000010157479f GaiaAuthFetcher::DispatchFetchedRequest(GURL const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, net::URLRequestStatus const&, int) + 383 40 libchrome_dll.dylib 0x000000010157417d GaiaAuthFetcher::OnURLFetchComplete(net::URLFetcher const*) + 2365 41 libnet.dylib 0x0000000113e7ec29 net::URLFetcherCore::InformDelegateFetchIsComplete() + 265 42 libnet.dylib 0x0000000113e7eaf6 net::URLFetcherCore::OnCompletedURLRequest(base::TimeDelta) + 310 43 libnet.dylib 0x0000000113e85438 void base::internal::FunctorTraits<void (net::URLFetcherCore::*)(base::TimeDelta), void>::Invoke<scoped_refptr<net::URLFetcherCore> const&, base::TimeDelta const&>(void (net::URLFetcherCore::*)(base::TimeDelta), scoped_refptr<net::URLFetcherCore> const&&&, base::TimeDelta const&&&) + 168 44 libnet.dylib 0x0000000113e8537f void base::internal::InvokeHelper<false, void>::MakeItSo<void (net::URLFetcherCore::* const&)(base::TimeDelta), scoped_refptr<net::URLFetcherCore> const&, base::TimeDelta const&>(void (net::URLFetcherCore::* const&&&)(base::TimeDelta), scoped_refptr<net::URLFetcherCore> const&&&, base::TimeDelta const&&&) + 95 45 libnet.dylib 0x0000000113e8530d void base::internal::Invoker<base::internal::BindState<void (net::URLFetcherCore::*)(base::TimeDelta), scoped_refptr<net::URLFetcherCore>, base::TimeDelta>, void ()>::RunImpl<void (net::URLFetcherCore::* const&)(base::TimeDelta), std::__1::tuple<scoped_refptr<net::URLFetcherCore>, base::TimeDelta> const&, 0ul, 1ul>(void (net::URLFetcherCore::* const&&&)(base::TimeDelta), std::__1::tuple<scoped_refptr<net::URLFetcherCore>, base::TimeDelta> const&&&, base::IndexSequence<0ul, 1ul>) + 125 46 libnet.dylib 0x0000000113e8521c base::internal::Invoker<base::internal::BindState<void (net::URLFetcherCore::*)(base::TimeDelta), scoped_refptr<net::URLFetcherCore>, base::TimeDelta>, void ()>::Run(base::internal::BindStateBase*) + 44 47 libbase.dylib 0x0000000110c7f44f base::Callback<void (), (base::internal::CopyMode)0, (base::internal::RepeatMode)0>::Run() + 95 48 libbase.dylib 0x0000000110ce43f0 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) + 1040 49 libbase.dylib 0x0000000110ddaede base::MessageLoop::RunTask(base::PendingTask*) + 894 50 libbase.dylib 0x0000000110ddb437 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) + 71 51 libbase.dylib 0x0000000110ddc31b base::MessageLoop::DoWork() + 715 52 libbase.dylib 0x0000000110dec55f base::MessagePumpCFRunLoopBase::RunWork() + 95 53 libbase.dylib 0x0000000110dec4ec ___ZN4base24MessagePumpCFRunLoopBase13RunWorkSourceEPv_block_invoke + 28 54 libbase.dylib 0x0000000110d873ca base::mac::CallWithEHFrame(void () block_pointer) + 10 55 libbase.dylib 0x0000000110deb9f5 base::MessagePumpCFRunLoopBase::RunWorkSource(void*) + 101 56 CoreFoundation 0x00007fff7e79f3e1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 57 CoreFoundation 0x00007fff7e78065c __CFRunLoopDoSources0 + 556 58 CoreFoundation 0x00007fff7e77fb46 __CFRunLoopRun + 934 59 CoreFoundation 0x00007fff7e77f544 CFRunLoopRunSpecific + 420 60 HIToolbox 0x00007fff7dcdfebc RunCurrentEventLoopInMode + 240 61 HIToolbox 0x00007fff7dcdfcf1 ReceiveNextEventCommon + 432
,
Jul 31 2017
As an aside, even if we didn't have to take a lock around client cert lookup, a function like AppleKeychain::FindGenericPassword would still want to be called on an IO-allowed thread because SecKeychainFindGenericPassword itself is a keychain lookup.
,
Aug 15 2017
--Chrome Identity automated triaging-- This bug is Untriaged and has gone for two weeks without any activity, so it is being moved to Available. Please see https://goo.gl/78kbny for more details. Please remove the Services>SignIn or UI>Browser>Profiles components if this bug isn't related to Chrome Identity. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Aug 16 2017
It looks like this issue is caused by a call to OSCrypt::EncryptString from HashPasswordManager. HashPasswordManager requires all calls to come from UI thread (https://cs.chromium.org/chromium/src/components/password_manager/core/browser/hash_password_manager.h?l=24&rcl=74a36cbe1036bdb685578ccd4be9bd60cae83272), but calls blocking OSCrypt methods inside. According to OSCrypt comment: https://cs.chromium.org/chromium/src/components/os_crypt/os_crypt.h?l=25&rcl=05b71cbdfb76e8843628e41afcaf11b433be7231, the same problem can also occur on Linux when password management tool is available. Assigning to Vadym as he is the author of HashPasswordManager.
,
Aug 1
,
Sep 3
--Chrome Identity automated triaging-- This bug is Assigned and has gone one month without any activity, so it is being moved to Available to indicate that it is not actively being worked on. If you are working on this bug, please mark yourself as the owner and move back to Assigned. Please see https://goo.gl/78kbny for more details. Please remove the Services>SignIn or UI>Browser>Profiles components if this bug isn't related to Chrome Identity. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by mattm@chromium.org
, Jul 31 2017