--gtest_also_run_disabled_tests seems to crash the test launcher sometimes |
|||
Issue descriptionRepro steps: OS: Windows 1. Build a debug base_unittests (I originally noticed this with content_browsertests, so you could use any target -- it seems like it's a test launcher issue). 2. Find a test that is DISABLED_, and that will result in test failure when run. On my system RegistryTest.DISABLED_Wow64RedirectedFromNative fits this bill. You could also just write your own. 3. Run this disabled test: out\d\base_unittests --gtest_filter=RegistryTest.DISABLED_Wow64RedirectedFromNative --gtest_also_run_disabled_tests 4. The test runs, but the test launcher process crashes while printing output: > issue_debug_notification C++ __acrt_report_runtime_error C++ abort C++ terminate C++ __scrt_unhandled_exception_filter C++ UnhandledExceptionFilter Unknown string "Enabling heap debug options\n" Unknown __C_specific_handler Unknown RtlpExecuteHandlerForException Unknown RtlDispatchException Unknown RtlRaiseException Unknown RaiseException Unknown _CxxThrowException C++ std::_Xout_of_range C++ std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, base::TestResultsTracker::CodeLocation, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, base::TestResultsTracker::CodeLocation> > >::at C++ base::TestResultsTracker::PrintTests<std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > > C++ base::TestResultsTracker::PrintSummaryOfCurrentIteration C++ base::TestLauncher::OnTestIterationFinished C++ base::TestLauncher::OnTestFinished C++ base::`anonymous namespace'::ProcessTestResults C++ base::`anonymous namespace'::GTestCallback C++ base::internal::FunctorTraits<void (*)(const base::(anonymous namespace)::GTestCallbackState &, int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), void>::Invoke<const base::(anonymous namespace)::GTestCallbackState &,int,const base::TimeDelta &,bool,const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &> C++ base::internal::InvokeHelper<false, void>::MakeItSo<void (*const &)(const base::(anonymous namespace)::GTestCallbackState &, int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),const base::(anonymous namespace)::GTestCallbackState &,int,const base::TimeDelta &,bool,const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &> C++ base::internal::Invoker<base::internal::BindState<void (*)(const base::(anonymous namespace)::GTestCallbackState &, int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::(anonymous namespace)::GTestCallbackState>, void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &)>::RunImpl<void (*const &)(const base::(anonymous namespace)::GTestCallbackState &, int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),const std::tuple<base::(anonymous namespace)::GTestCallbackState> &,0> C++ base::internal::Invoker<base::internal::BindState<void (*)(const base::(anonymous namespace)::GTestCallbackState &, int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::(anonymous namespace)::GTestCallbackState>, void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &)>::Run C++ base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating>::Run C++ base::TestLauncher::OnLaunchTestProcessFinished C++ base::internal::FunctorTraits<void (base::TestLauncher::*)(const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> &, int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), void>::Invoke<base::TestLauncher *,const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::internal::CopyMode::Copyable,base::internal::RepeatMode::Repeating> &,int,const base::TimeDelta &,bool,const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &> C++ base::internal::InvokeHelper<false, void>::MakeItSo<void (base::TestLauncher::*const &)(const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::internal::CopyMode::Copyable,base::internal::RepeatMode::Repeating> &, int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::TestLauncher *,const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::internal::CopyMode::Copyable,base::internal::RepeatMode::Repeating> &,int,const base::TimeDelta &,bool,const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &> C++ base::internal::Invoker<base::internal::BindState<void (base::TestLauncher::*)(const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> &, int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::UnretainedWrapper<base::TestLauncher>, base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> >, void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &)>::RunImpl<void (base::TestLauncher::*const &)(const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::internal::CopyMode::Copyable,base::internal::RepeatMode::Repeating> &, int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),const std::tuple<base::internal::UnretainedWrapper<base::TestLauncher>,base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::internal::CopyMode::Copyable,base::internal::RepeatMode::Repeating> > &,0,1> C++ base::internal::Invoker<base::internal::BindState<void (base::TestLauncher::*)(const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> &, int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::UnretainedWrapper<base::TestLauncher>, base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> >, void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &)>::Run C++ base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating>::Run C++ base::`anonymous namespace'::RunCallback C++ base::internal::FunctorTraits<void (*)(const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> &, int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), void>::Invoke<base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::internal::CopyMode::Copyable,base::internal::RepeatMode::Repeating>,int,base::TimeDelta,bool,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > C++ base::internal::InvokeHelper<false, void>::MakeItSo<void (*)(const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::internal::CopyMode::Copyable,base::internal::RepeatMode::Repeating> &, int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::internal::CopyMode::Copyable,base::internal::RepeatMode::Repeating>,int,base::TimeDelta,bool,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > C++ base::internal::Invoker<base::internal::BindState<void (*)(const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> &, int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating>, int, base::TimeDelta, bool, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, void ()>::RunImpl<void (*)(const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::internal::CopyMode::Copyable,base::internal::RepeatMode::Repeating> &, int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),std::tuple<base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &),base::internal::CopyMode::Copyable,base::internal::RepeatMode::Repeating>,int,base::TimeDelta,bool,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,0,1,2,3,4> C++ base::internal::Invoker<base::internal::BindState<void (*)(const base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating> &, int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::Callback<void (int, const base::TimeDelta &, bool, const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &), base::internal::CopyMode::Copyable, base::internal::RepeatMode::Repeating>, int, base::TimeDelta, bool, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, void ()>::RunOnce C++ base::Callback<void (), base::internal::CopyMode::MoveOnly, base::internal::RepeatMode::Once>::Run C++ base::debug::TaskAnnotator::RunTask C++ base::MessageLoop::RunTask C++ base::MessageLoop::DeferOrRunPendingTask C++ base::MessageLoop::DoWork C++ base::MessagePumpForIO::DoRunLoop C++ base::MessagePumpWin::Run C++ base::MessageLoop::Run C++ base::RunLoop::Run C++ base::TestLauncher::Run C++ base::`anonymous namespace'::LaunchUnitTestsInternal C++ base::LaunchUnitTests C++ main C++
,
Aug 10 2017
,
Sep 19 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ee31d1d4c67d2523443f9d309050c0aadbd2dcbc commit ee31d1d4c67d2523443f9d309050c0aadbd2dcbc Author: Nick Carter <nick@chromium.org> Date: Tue Sep 19 00:10:59 2017 Fix test launcher crash when parsing the output of a failed, DISABLED test. An earlier refactor of this code appears to have stripped out the DISABLED prefix when building into the |test_locations_| map, but when that map is queried, the DISABLED prefix was still present in the keys. This caused a crash, at least in Windows debug builds it did. TBR=seanmccullough@chromium.org Bug: 754441 Change-Id: Ie78294dfeb7369c3ad9573a2017a29e5e3787708 Reviewed-on: https://chromium-review.googlesource.com/611139 Reviewed-by: Nick Carter <nick@chromium.org> Commit-Queue: Nick Carter <nick@chromium.org> Cr-Commit-Position: refs/heads/master@{#502726} [modify] https://crrev.com/ee31d1d4c67d2523443f9d309050c0aadbd2dcbc/base/test/launcher/test_results_tracker.cc
,
Sep 19 2017
,
Sep 19 2017
|
|||
►
Sign in to add a comment |
|||
Comment 1 by nick@chromium.org
, Aug 10 2017