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

Issue 850013 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 2
Type: Bug

Blocked on:
issue 850082



Sign in to add a comment

DCHECK !form.password_element.empty()

Project Member Reported by vasi...@chromium.org, Jun 6 2018

Issue description

[33374:775:0606/110229.482164:FATAL:password_form_manager.cc(156)] Check failed: !form.password_element.empty(). 
0   libbase.dylib                       0x00000001226d402e base::debug::StackTrace::StackTrace(unsigned long) + 174
1   libbase.dylib                       0x00000001226d40ed base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x00000001222fc73c base::debug::StackTrace::StackTrace() + 28
3   libbase.dylib                       0x000000012237b4ac logging::LogMessage::~LogMessage() + 460
4   libbase.dylib                       0x0000000122379215 logging::LogMessage::~LogMessage() + 21
5   libchrome_dll.dylib                 0x000000011334208a password_manager::(anonymous namespace)::SetFieldLabelsOnSave(autofill::ServerFieldType, autofill::PasswordForm const&, std::__1::map<std::__1::basic_string<unsigned short, base::string16_internals::string16_char_traits, std::__1::allocator<unsigned short> >, autofill::ServerFieldType, std::__1::less<std::__1::basic_string<unsigned short, base::string16_internals::string16_char_traits, std::__1::allocator<unsigned short> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<unsigned short, base::string16_internals::string16_char_traits, std::__1::allocator<unsigned short> > const, autofill::ServerFieldType> > >*) + 906
6   libchrome_dll.dylib                 0x00000001133381ca password_manager::PasswordFormManager::UploadPasswordVote(autofill::PasswordForm const&, autofill::ServerFieldType const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 1034
7   libchrome_dll.dylib                 0x000000011333ef5b password_manager::PasswordFormManager::SendVoteOnCredentialsReuse(autofill::PasswordForm const&, autofill::PasswordForm*) + 315
8   libchrome_dll.dylib                 0x0000000113335ea4 password_manager::PasswordFormManager::ProcessUpdate() + 836
9   libchrome_dll.dylib                 0x00000001133342e2 password_manager::PasswordFormManager::Save() + 850
10  libchrome_dll.dylib                 0x00000001133c04bf password_manager::PasswordManager::OnLoginSuccessful() + 3999
11  libchrome_dll.dylib                 0x00000001133c552a password_manager::PasswordManager::OnPasswordFormsRendered(password_manager::PasswordManagerDriver*, std::__1::vector<autofill::PasswordForm, std::__1::allocator<autofill::PasswordForm> > const&, bool) + 4538
12  libchrome_dll.dylib                 0x0000000114d81b20 password_manager::ContentPasswordManagerDriver::PasswordFormsRendered(std::__1::vector<autofill::PasswordForm, std::__1::allocator<autofill::PasswordForm> > const&, bool) + 576

Steps to reproduce
- Generate a password on facebook
- Refresh the page
- Chrome crashes.

https://chromium-review.googlesource.com/c/chromium/src/+/1014105 is the culprit.
 

Comment 1 by kolos@chromium.org, Jun 7 2018

Blockedon: 850082
Status: Started (was: Assigned)
Cannot reproduce because the debug build crashes on startup. Waiting...
Open chrome/browser/search/thumbnail_source.cc and comment out the lines 53-91.
Cc: nepper@chromium.org

Comment 4 by kolos@chromium.org, Jun 8 2018

#2 doesn't help me

Comment 5 by kolos@chromium.org, Jun 8 2018

Still cannot reproduce the issue. 

Somehow OnLoginSucccessful was triggered on page refresh. I don't see it now.
Vasilii, can you help with repro steps? Has this change hit Canary, yet?

Because on Canary (Mac) 69.0.3451.0 I can't reproduce using the following steps:
- enable password generation from chrome://flags
- relaunch Chrome
- go to facebook.com
- on the sign-up form click into the password field
- confirm generation drop-down shows
- click on the generated password
- confirm the password got filled into the password field
- reload the page

No crash.
This is a DCHECK, it's off by default in the release builds.

I can reproduce it on the top of the tree

[19790:775:0608/105854.284266:FATAL:password_form_manager.cc(158)] Check failed: !form.password_element.empty(). 
0   libbase.dylib                       0x00000001053f50ce base::debug::StackTrace::StackTrace(unsigned long) + 174
1   libbase.dylib                       0x00000001053f518d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x000000010501cddc base::debug::StackTrace::StackTrace() + 28
3   libbase.dylib                       0x000000010509bb4c logging::LogMessage::~LogMessage() + 460
4   libbase.dylib                       0x00000001050998b5 logging::LogMessage::~LogMessage() + 21
5   libchrome_dll.dylib                 0x000000010d80704a password_manager::(anonymous namespace)::SetFieldLabelsOnSave(autofill::ServerFieldType, autofill::PasswordForm const&, std::__1::map<std::__1::basic_string<unsigned short, base::string16_internals::string16_char_traits, std::__1::allocator<unsigned short> >, autofill::ServerFieldType, std::__1::less<std::__1::basic_string<unsigned short, base::string16_internals::string16_char_traits, std::__1::allocator<unsigned short> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<unsigned short, base::string16_internals::string16_char_traits, std::__1::allocator<unsigned short> > const, autofill::ServerFieldType> > >*) + 906
6   libchrome_dll.dylib                 0x000000010d7fd0ca password_manager::PasswordFormManager::UploadPasswordVote(autofill::PasswordForm const&, autofill::ServerFieldType const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 1034
7   libchrome_dll.dylib                 0x000000010d803f1b password_manager::PasswordFormManager::SendVoteOnCredentialsReuse(autofill::PasswordForm const&, autofill::PasswordForm*) + 315
8   libchrome_dll.dylib                 0x000000010d7fada4 password_manager::PasswordFormManager::ProcessUpdate() + 836
9   libchrome_dll.dylib                 0x000000010d7f91e2 password_manager::PasswordFormManager::Save() + 850
10  libchrome_dll.dylib                 0x000000010d885daf password_manager::PasswordManager::OnLoginSuccessful() + 3999
11  libchrome_dll.dylib                 0x000000010d88ae1a password_manager::PasswordManager::OnPasswordFormsRendered(password_manager::PasswordManagerDriver*, std::__1::vector<autofill::PasswordForm, std::__1::allocator<autofill::PasswordForm> > const&, bool) + 4538
12  libchrome_dll.dylib                 0x000000010f264260 password_manager::ContentPasswordManagerDriver::PasswordFormsRendered(std::__1::vector<autofill::PasswordForm, std::__1::allocator<autofill::PasswordForm> > const&, bool) + 576
ugh. most. stupid. question. of. the. quarter.

Thanks for reminding me ;).

Comment 9 by kolos@chromium.org, Jun 8 2018

This DCHECK is not necessary. A field may have an empty name. Then, we shouldn't upload any votes for such forms. It is already checked in |LabelFields|. So, I will simply remove a couple of DCHECKs.

However, it is strange that OnLoginSucessful is triggered without real form submission. 
Project Member

Comment 10 by bugdroid1@chromium.org, Jun 11 2018

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

commit 457bd39091c7293908c7876f3fbefd7dc07701c3
Author: Maxim Kolosovskiy <kolos@chromium.org>
Date: Mon Jun 11 15:39:06 2018

[Password Manager] Remove DCHECKs for field name as a field can have
empty name

Votes are not uploaded for fields with empty names. It is checked in |LabelFields|. So, adding empty keys to |field_types| is ok.

Bug:  850013 
Change-Id: I46dd0b665a612d5c23e116d7e2664e5c12d7f804
Reviewed-on: https://chromium-review.googlesource.com/1092855
Commit-Queue: Maxim Kolosovskiy <kolos@chromium.org>
Reviewed-by: Vadym Doroshenko <dvadym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566011}
[modify] https://crrev.com/457bd39091c7293908c7876f3fbefd7dc07701c3/components/password_manager/core/browser/password_form_manager.cc

Comment 11 by kolos@chromium.org, Jun 12 2018

Status: Fixed (was: Started)

Sign in to add a comment