New issue
Advanced search Search tips

Issue 735036 link

Starred by 2 users

Issue metadata

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



Sign in to add a comment

[Autofill[] AddressValidatorTest.SubKeysNotLoaded (CRASHED)

Project Member Reported by ma...@chromium.org, Jun 20 2017

Issue description

ninja -C out/Default libaddressinput_unittests
cd ..
./src/out/Default libaddressinput_unittests --gtest_filter=*SubKeys*

One test is crashing:

[ RUN      ] AddressValidatorTest.SubKeysNotLoaded
[61560:775:0620/104255.506324:101852680527902:FATAL:thread_task_runner_handle.cc(28)] Check failed: current. 
0   libbase.dylib                       0x000000010a1acfbe base::debug::StackTrace::StackTrace(unsigned long) + 174
1   libbase.dylib                       0x000000010a1ad05d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x000000010a1ab4ec base::debug::StackTrace::StackTrace() + 28
3   libbase.dylib                       0x000000010a24ac3f logging::LogMessage::~LogMessage() + 479
4   libbase.dylib                       0x000000010a2485b5 logging::LogMessage::~LogMessage() + 21
5   libbase.dylib                       0x000000010a4b397d base::ThreadTaskRunnerHandle::Get() + 221
6   libaddressinput_unittests           0x000000010983e076 autofill::AddressValidator::RulesLoaded(bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) + 230
7   libaddressinput_unittests           0x0000000109840c5f i18n::addressinput::(anonymous namespace)::CallbackImpl<autofill::AddressValidator, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int>::operator()(bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) const + 143
8   libaddressinput_unittests           0x00000001098870e3 i18n::addressinput::(anonymous namespace)::Helper::OnRetrieved(bool, 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&) + 21619
9   libaddressinput_unittests           0x00000001098873d3 i18n::addressinput::(anonymous namespace)::CallbackImpl<i18n::addressinput::(anonymous namespace)::Helper, 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&>::operator()(bool, 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 + 147
10  libaddressinput_unittests           0x00000001098a426e i18n::addressinput::(anonymous namespace)::Helper::OnFreshDataReady(bool, 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> >*) + 222
11  libaddressinput_unittests           0x00000001098a49d3 i18n::addressinput::(anonymous namespace)::CallbackImpl<i18n::addressinput::(anonymous namespace)::Helper, 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> >*>::operator()(bool, 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 + 147
12  libaddressinput_unittests           0x00000001097a6fd9 i18n::addressinput::TestdataSource::Get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, i18n::addressinput::Callback<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 + 1801
13  libaddressinput_unittests           0x00000001098a474b i18n::addressinput::(anonymous namespace)::Helper::OnValidatedDataReady(bool, 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> >*) + 491
14  libaddressinput_unittests           0x00000001098a49d3 i18n::addressinput::(anonymous namespace)::CallbackImpl<i18n::addressinput::(anonymous namespace)::Helper, 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> >*>::operator()(bool, 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 + 147
15  libaddressinput_unittests           0x00000001098a7a45 i18n::addressinput::(anonymous namespace)::Helper::OnWrappedDataReady(bool, 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> >*) + 357
16  libaddressinput_unittests           0x00000001098a7cb3 i18n::addressinput::(anonymous namespace)::CallbackImpl<i18n::addressinput::(anonymous namespace)::Helper, 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> >*>::operator()(bool, 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 + 147
17  libaddressinput_unittests           0x0000000109875c5f i18n::addressinput::NullStorage::Get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, i18n::addressinput::Callback<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 + 63
18  libaddressinput_unittests           0x00000001098a7868 i18n::addressinput::(anonymous namespace)::Helper::Helper(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, i18n::addressinput::Callback<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&, i18n::addressinput::Storage const&) + 168
19  libaddressinput_unittests           0x00000001098a76ed i18n::addressinput::(anonymous namespace)::Helper::Helper(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, i18n::addressinput::Callback<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&, i18n::addressinput::Storage const&) + 45
20  libaddressinput_unittests           0x00000001098a7643 i18n::addressinput::ValidatingStorage::Get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, i18n::addressinput::Callback<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 + 99
21  libaddressinput_unittests           0x00000001098a410b i18n::addressinput::(anonymous namespace)::Helper::Helper(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, i18n::addressinput::Callback<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&, i18n::addressinput::Source const&, i18n::addressinput::ValidatingStorage*) + 539
22  libaddressinput_unittests           0x00000001098a3d65 i18n::addressinput::(anonymous namespace)::Helper::Helper(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, i18n::addressinput::Callback<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&, i18n::addressinput::Source const&, i18n::addressinput::ValidatingStorage*) + 53
23  libaddressinput_unittests           0x00000001098a3c94 i18n::addressinput::Retriever::Retrieve(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, i18n::addressinput::Callback<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&) const + 116
24  libaddressinput_unittests           0x0000000109881bcc i18n::addressinput::(anonymous namespace)::Helper::Helper(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&, i18n::addressinput::Callback<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int> const&, i18n::addressinput::Retriever const&, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<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> > > >*, i18n::addressinput::IndexMap*, std::__1::vector<i18n::addressinput::Rule const*, std::__1::allocator<i18n::addressinput::Rule const*> >*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, i18n::addressinput::Rule const*, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, i18n::addressinput::Rule const*> > >*) + 972
25  libaddressinput_unittests           0x0000000109880c14 i18n::addressinput::(anonymous namespace)::Helper::Helper(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&, i18n::addressinput::Callback<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int> const&, i18n::addressinput::Retriever const&, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<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> > > >*, i18n::addressinput::IndexMap*, std::__1::vector<i18n::addressinput::Rule const*, std::__1::allocator<i18n::addressinput::Rule const*> >*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, i18n::addressinput::Rule const*, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, i18n::addressinput::Rule const*> > >*) + 116
26  libaddressinput_unittests           0x0000000109880514 i18n::addressinput::PreloadSupplier::LoadRules(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, i18n::addressinput::Callback<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int> const&) + 388
27  libaddressinput_unittests           0x000000010983e990 autofill::AddressValidator::LoadRules(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 144
28  libaddressinput_unittests           0x00000001095da31a autofill::AddressValidatorTest_SubKeysNotLoaded_Test::TestBody() + 282
29  libaddressinput_unittests           0x000000010982c05e void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) + 126
30  libaddressinput_unittests           0x00000001098056a2 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) + 114
31  libaddressinput_unittests           0x00000001098055d6 testing::Test::Run() + 198
32  libaddressinput_unittests           0x000000010980675d testing::TestInfo::Run() + 221
33  libaddressinput_unittests           0x0000000109807abc testing::TestCase::Run() + 236
34  libaddressinput_unittests           0x0000000109814fca testing::internal::UnitTestImpl::RunAllTests() + 922
35  libaddressinput_unittests           0x000000010983033e bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) + 126
36  libaddressinput_unittests           0x0000000109814bb2 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) + 114
37  libaddressinput_unittests           0x0000000109814a8e testing::UnitTest::Run() + 366
38  libaddressinput_unittests           0x00000001099ce351 RUN_ALL_TESTS() + 17
39  libaddressinput_unittests           0x00000001099cd6fe base::TestSuite::Run() + 334
40  libaddressinput_unittests           0x00000001098abf7d int base::internal::FunctorTraits<int (base::TestSuite::*)(), void>::Invoke<base::TestSuite*>(int (base::TestSuite::*)(), base::TestSuite*&&) + 125
41  libaddressinput_unittests           0x00000001098abec4 int base::internal::InvokeHelper<false, int>::MakeItSo<int (base::TestSuite::* const&)(), base::TestSuite*>(int (base::TestSuite::* const&&&)(), base::TestSuite*&&) + 68
42  libaddressinput_unittests           0x00000001098abe53 int base::internal::Invoker<base::internal::BindState<int (base::TestSuite::*)(), base::internal::UnretainedWrapper<base::TestSuite> >, int ()>::RunImpl<int (base::TestSuite::* const&)(), std::__1::tuple<base::internal::UnretainedWrapper<base::TestSuite> > const&, 0ul>(int (base::TestSuite::* const&&&)(), std::__1::tuple<base::internal::UnretainedWrapper<base::TestSuite> > const&&&, base::IndexSequence<0ul>) + 99
43  libaddressinput_unittests           0x00000001098abd5c base::internal::Invoker<base::internal::BindState<int (base::TestSuite::*)(), base::internal::UnretainedWrapper<base::TestSuite> >, int ()>::Run(base::internal::BindStateBase*) + 44
44  libaddressinput_unittests           0x0000000109a1186d base::Callback<int (), (base::internal::CopyMode)1, (base::internal::RepeatMode)1>::Run() const + 61
45  libaddressinput_unittests           0x0000000109a0edf7 base::(anonymous namespace)::LaunchUnitTestsInternal(base::Callback<int (), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&, int, int, bool, base::Callback<void (), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&) + 375
46  libaddressinput_unittests           0x0000000109a0ec42 base::LaunchUnitTests(int, char**, base::Callback<int (), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&) + 130
47  libaddressinput_unittests           0x00000001098abb23 main + 163
48  libdyld.dylib                       0x000000010e2b1235 start + 1

[61559:6147:0620/104255.575381:101852749581159:ERROR:kill_posix.cc(84)] Unable to terminate process group 61560: No such process
 
Status: Started (was: Assigned)
Project Member

Comment 2 by bugdroid1@chromium.org, Jun 29 2017

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

commit 1ccce34079720f94e410b5409e601b9d30ebe09b
Author: parastoog <parastoog@google.com>
Date: Thu Jun 29 21:18:56 2017

Problem:

AddressValidatorTest.SubKeysNotLoaded would crash,
because AddressValidator would not handle the synchronous cases.
The DCHECK in ThreadTaskRunnerHandle::Get() causes the crash,
and it should.

Solution:

Since the process of loading rules should always be asynchronous,
there should be no check in the RulesLoaded, the later DCHECK
would serve the purpose.

Therefore, change the unit-test country code from "ZZ" to "OZ",
because the data for ZZ can't be parsed, and the success = 0,
and since the tests are synchronous, there would be a crash.
For "OZ", there is no data, therefore success = 1, but there would
be no rules loaded for that, which serves the purpose.

ASSERT_EQ(success, status == AddressValidator::SUCCESS) is changed,
because for the case of AddressValidator::RULES_UNAVAILABLE,
success == true, but status != AddressValidator::SUCCESS.
Also, since the AddressValidatorTest loads rules synchronously,
success should always be true, or there will be a crash.

Add an extra check in this unittest, to make sure that the rules
are not loaded.

Rename SubKeysNotLoaded to SubKeysNotExists,
to be clear that no data exists for this country code.

BUG= 735036 

Review-Url: https://codereview.chromium.org/2950353002
Cr-Commit-Position: refs/heads/master@{#483488}

[modify] https://crrev.com/1ccce34079720f94e410b5409e601b9d30ebe09b/third_party/libaddressinput/chromium/chrome_address_validator_unittest.cc

Status: Fixed (was: Started)

Sign in to add a comment