New issue
Advanced search Search tips

Issue 742464 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jul 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug



Sign in to add a comment

DCHECK hit when saving password

Project Member Reported by bsep@chromium.org, Jul 13 2017

Issue description

Chrome Version: 61.0.3157.0 (Developer Build) (32-bit)
OS: Win10

Pressing "Save" when prompted to remember a password hits a DCHECK. It appears "possible_types" passed to GetActualFieldType (autofill_metrics.cc:330) contains both "EMPTY_TYPE" and "PASSWORD."

Stack track:
 	base.dll!base::debug::BreakDebugger() Line 21	C++
 	base.dll!logging::LogMessage::~LogMessage() Line 787	C++
>	chrome.dll!autofill::`anonymous namespace'::GetActualFieldType(const std::set<enum autofill::ServerFieldType,std::less<enum autofill::ServerFieldType>,std::allocator<enum autofill::ServerFieldType> > & possible_types, autofill::ServerFieldType predicted_type) Line 336	C++
 	chrome.dll!autofill::`anonymous namespace'::LogPredictionQualityMetrics(autofill::AutofillMetrics::QualityMetricPredictionSource prediction_source, autofill::ServerFieldType predicted_type, autofill::AutofillMetrics::FormInteractionsUkmLogger * form_interactions_ukm_logger, const autofill::FormStructure & form, const autofill::AutofillField & field, autofill::AutofillMetrics::QualityMetricType metric_type) Line 401	C++
 	chrome.dll!autofill::AutofillMetrics::LogHeuristicPredictionQualityMetrics(autofill::AutofillMetrics::FormInteractionsUkmLogger * form_interactions_ukm_logger, const autofill::FormStructure & form, const autofill::AutofillField & field, autofill::AutofillMetrics::QualityMetricType metric_type) Line 714	C++
 	chrome.dll!autofill::FormStructure::LogQualityMetrics(const base::TimeTicks & load_time, const base::TimeTicks & interaction_time, const base::TimeTicks & submission_time, rappor::RapporServiceImpl * rappor_service, autofill::AutofillMetrics::FormInteractionsUkmLogger * form_interactions_ukm_logger, bool did_show_suggestions, bool observed_submission) Line 724	C++
 	chrome.dll!autofill::AutofillManager::UploadFormDataAsyncCallback(const autofill::FormStructure * submitted_form, const base::TimeTicks & load_time, const base::TimeTicks & interaction_time, const base::TimeTicks & submission_time, bool observed_submission) Line 1532	C++
 	chrome.dll!base::internal::FunctorTraits<void (__thiscall autofill::AutofillManager::*)(autofill::FormStructure const *,base::TimeTicks const &,base::TimeTicks const &,base::TimeTicks const &,bool),void>::Invoke<base::WeakPtr<autofill::AutofillManager>,autofill::FormStructure *,base::TimeTicks,base::TimeTicks,base::TimeTicks,bool>(void(autofill::AutofillManager::*)(const autofill::FormStructure *, const base::TimeTicks &, const base::TimeTicks &, const base::TimeTicks &, bool) method, base::WeakPtr<autofill::AutofillManager> && receiver_ptr, autofill::FormStructure * && <args_0>, base::TimeTicks && <args_1>, base::TimeTicks && <args_2>, base::TimeTicks && <args_3>, bool && <args_4>) Line 210	C++
 	chrome.dll!base::internal::InvokeHelper<1,void>::MakeItSo<void (__thiscall autofill::AutofillManager::*)(autofill::FormStructure const *,base::TimeTicks const &,base::TimeTicks const &,base::TimeTicks const &,bool),base::WeakPtr<autofill::AutofillManager>,autofill::FormStructure *,base::TimeTicks,base::TimeTicks,base::TimeTicks,bool>(void(autofill::AutofillManager::*)(const autofill::FormStructure *, const base::TimeTicks &, const base::TimeTicks &, const base::TimeTicks &, bool) && functor, base::WeakPtr<autofill::AutofillManager> && weak_ptr, autofill::FormStructure * && <args_0>, base::TimeTicks && <args_1>, base::TimeTicks && <args_2>, base::TimeTicks && <args_3>, bool && <args_4>) Line 295	C++
 	chrome.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall autofill::AutofillManager::*)(autofill::FormStructure const *,base::TimeTicks const &,base::TimeTicks const &,base::TimeTicks const &,bool),base::WeakPtr<autofill::AutofillManager>,base::internal::OwnedWrapper<autofill::FormStructure>,base::TimeTicks,base::TimeTicks,base::TimeTicks,bool>,void __cdecl(void)>::RunImpl<void (__thiscall autofill::AutofillManager::*)(autofill::FormStructure const *,base::TimeTicks const &,base::TimeTicks const &,base::TimeTicks const &,bool),std::tuple<base::WeakPtr<autofill::AutofillManager>,base::internal::OwnedWrapper<autofill::FormStructure>,base::TimeTicks,base::TimeTicks,base::TimeTicks,bool>,0,1,2,3,4,5>(void(autofill::AutofillManager::*)(const autofill::FormStructure *, const base::TimeTicks &, const base::TimeTicks &, const base::TimeTicks &, bool) && functor, std::tuple<base::WeakPtr<autofill::AutofillManager>,base::internal::OwnedWrapper<autofill::FormStructure>,base::TimeTicks,base::TimeTicks,base::TimeTicks,bool> && bound, base::IndexSequence<0,1,2,3,4,5> __formal) Line 351	C++
 	chrome.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall autofill::AutofillManager::*)(autofill::FormStructure const *,base::TimeTicks const &,base::TimeTicks const &,base::TimeTicks const &,bool),base::WeakPtr<autofill::AutofillManager>,base::internal::OwnedWrapper<autofill::FormStructure>,base::TimeTicks,base::TimeTicks,base::TimeTicks,bool>,void __cdecl(void)>::RunOnce(base::internal::BindStateBase * base) Line 316	C++
 	base.dll!base::Callback<void __cdecl(void),0,0>::Run() Line 91	C++
 	base.dll!base::`anonymous namespace'::PostTaskAndReplyRelay::RunReplyAndSelfDestruct() Line 63	C++
 	base.dll!base::internal::FunctorTraits<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void),void>::Invoke<base::`anonymous namespace'::PostTaskAndReplyRelay *>(void(base::`anonymous-namespace'::PostTaskAndReplyRelay::*)() method, base::`anonymous-namespace'::PostTaskAndReplyRelay * && receiver_ptr) Line 210	C++
 	base.dll!base::internal::InvokeHelper<0,void>::MakeItSo<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void),base::A0x2fcc8b31::PostTaskAndReplyRelay *>(void(base::`anonymous-namespace'::PostTaskAndReplyRelay::*)() && functor, base::`anonymous-namespace'::PostTaskAndReplyRelay * && <args_0>) Line 275	C++
 	base.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void),base::internal::UnretainedWrapper<base::`anonymous namespace'::PostTaskAndReplyRelay> >,void __cdecl(void)>::RunImpl<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void),std::tuple<base::internal::UnretainedWrapper<base::`anonymous namespace'::PostTaskAndReplyRelay> >,0>(void(base::`anonymous-namespace'::PostTaskAndReplyRelay::*)() && functor, std::tuple<base::internal::UnretainedWrapper<base::`anonymous namespace'::PostTaskAndReplyRelay> > && bound, base::IndexSequence<0> __formal) Line 351	C++
 	base.dll!base::internal::Invoker<base::internal::BindState<void (__thiscall base::`anonymous namespace'::PostTaskAndReplyRelay::*)(void),base::internal::UnretainedWrapper<base::`anonymous namespace'::PostTaskAndReplyRelay> >,void __cdecl(void)>::RunOnce(base::internal::BindStateBase * base) Line 316	C++
 	base.dll!base::Callback<void __cdecl(void),0,0>::Run() Line 91	C++
 	base.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, base::PendingTask * pending_task) Line 61	C++
 	base.dll!base::MessageLoop::RunTask(base::PendingTask * pending_task) Line 423	C++
 	base.dll!base::MessageLoop::DeferOrRunPendingTask(base::PendingTask pending_task) Line 436	C++
 	base.dll!base::MessageLoop::DoWork() Line 540	C++
 	base.dll!base::MessagePumpForUI::DoRunLoop() Line 173	C++
 	base.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) Line 58	C++
 	base.dll!base::MessageLoop::Run() Line 370	C++
 	base.dll!base::RunLoop::Run() Line 112	C++
 	chrome.dll!ChromeBrowserMainParts::MainMessageLoopRun(int * result_code) Line 1963	C++
 	content.dll!content::BrowserMainLoop::RunMainMessageLoopParts() Line 1159	C++
 	content.dll!content::BrowserMainRunnerImpl::Run() Line 143	C++
 	content.dll!content::BrowserMain(const content::MainFunctionParams & parameters) Line 46	C++
 	content.dll!content::RunNamedProcessTypeMain(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & process_type, const content::MainFunctionParams & main_function_params, content::ContentMainDelegate * delegate) Line 407	C++
 	content.dll!content::ContentMainRunnerImpl::Run() Line 686	C++
 	content.dll!content::ContentServiceManagerMainDelegate::RunEmbedderProcess() Line 52	C++
 	embedder.dll!service_manager::Main(const service_manager::MainParams & params) Line 469	C++
 	content.dll!content::ContentMain(const content::ContentMainParams & params) Line 19	C++
 	chrome.dll!ChromeMain(HINSTANCE__ * instance, sandbox::SandboxInterfaceInfo * sandbox_info, __int64 exe_entry_point_ticks) Line 134	C++
 	chrome.exe!MainDllLoader::Launch(HINSTANCE__ * instance, base::TimeTicks exe_entry_point_ticks) Line 199	C++
 	chrome.exe!wWinMain(HINSTANCE__ * instance, HINSTANCE__ * prev, wchar_t * __formal, int __formal) Line 268	C++

 

Comment 1 by battre@chromium.org, Jul 13 2017

Cc: vabr@chromium.org kolos@chromium.org
Owner: rogerm@chromium.org
+rogerm to check whether this is a problem in autofill_metrics.cc or the password manager. 

Comment 2 by rogerm@chromium.org, Jul 13 2017

Cc: rogerm@chromium.org
Owner: dvadym@chromium.org
dvadym@ is already working on a fix for this.

https://chromium-review.googlesource.com/c/570167

Comment 3 by vabr@chromium.org, Jul 14 2017

Cc: -vabr@chromium.org
Project Member

Comment 4 by bugdroid1@chromium.org, Jul 17 2017

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

commit c45f951d54317212473581b34ddded1b84db5dfd
Author: Vadym Doroshenko <dvadym@chromium.org>
Date: Mon Jul 17 17:40:31 2017

[Autofill] Skip finding type of a sign-in form password field.

An upload for sign-in form comes from Password Manager and password value is not set. Without this patch profile.GetMatchingTypes adds EMPTY type in |matching_types| that is not correct and moreover it causes DCHECK failure in https://cs.chromium.org/chromium/src/components/autofill/core/browser/autofill_metrics.cc?q=autofill_metrics.cc&sq=package:chromium&dr&l=335 and in other places.   

Bug:  742464 
Change-Id: Iece3caa40337c15828ab76fcb2ff3e68e659599d
Reviewed-on: https://chromium-review.googlesource.com/570167
Commit-Queue: Vadym Doroshenko <dvadym@chromium.org>
Reviewed-by: Roger McFarlane <rogerm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487142}
[modify] https://crrev.com/c45f951d54317212473581b34ddded1b84db5dfd/components/autofill/core/browser/autofill_manager.cc
[modify] https://crrev.com/c45f951d54317212473581b34ddded1b84db5dfd/components/autofill/core/browser/autofill_manager_unittest.cc

Comment 5 by dvadym@chromium.org, Jul 19 2017

Status: Fixed (was: Untriaged)

Sign in to add a comment