DCHECK hit when saving password |
||||
Issue descriptionChrome 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++
,
Jul 13 2017
dvadym@ is already working on a fix for this. https://chromium-review.googlesource.com/c/570167
,
Jul 14 2017
,
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
,
Jul 19 2017
|
||||
►
Sign in to add a comment |
||||
Comment 1 by battre@chromium.org
, Jul 13 2017Owner: rogerm@chromium.org