New issue
Advanced search Search tips

Issue 750849 link

Starred by 1 user

Issue metadata

Status: Available
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Mac
Pri: 3
Type: Bug



Sign in to add a comment

crypto::GetMacSecurityServicesLock shouldn't be used on non-io-allowed threads.

Project Member Reported by mattm@chromium.org, Jul 31 2017

Issue description

As  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

 

Comment 1 by mattm@chromium.org, Jul 31 2017

Components: Services>SignIn UI>Browser>Passwords
Adding some components that seem plausible.

(Note that in the above example I added an AssertIOAllowed call in crypto::GetMacSecurityServicesLock for testing. It currently doesn't have such a call in trunk, though we'd like to add one.)
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.
Project Member

Comment 3 by sheriffbot@chromium.org, Aug 15 2017

Cc: droger@chromium.org ew...@chromium.org jlebel@chromium.org bsazonov@chromium.org msarda@chromium.org
Status: Available (was: Untriaged)
--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
Labels: OS-Linux
Owner: dvadym@chromium.org
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.


Status: Assigned (was: Available)
Project Member

Comment 6 by sheriffbot@chromium.org, Sep 3

Status: Available (was: Assigned)
--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