TaskSchedulerWorkerPoolBlockingTest.MaximumWorkersTest failed in base_unittests |
||||
Issue description[00052.196] 03532.03559> [ RUN ] TaskSchedulerWorkerPoolBlockingTest.MaximumWorkersTest [00052.196] 03532.03559> ../../base/task_scheduler/scheduler_worker_pool_impl_unittest.cc:1434: Failure [00052.196] 03532.03559> Expected: worker_pool_->GetWorkerCapacityForTesting() [00052.196] 03532.03559> Which is: 17 [00052.197] 03532.03559> To be equal to: kNumWorkersInWorkerPool + kNumExtraTasks [00052.197] 03532.03559> Which is: 14 [00052.197] 03532.03559> [ FAILED ] TaskSchedulerWorkerPoolBlockingTest.MaximumWorkersTest (6279 ms) https://build.chromium.org/p/chromium.fyi/builders/Fuchsia/builds/9656
,
Feb 7 2018
This looks probably the same as bug 792310 .
,
Feb 7 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e31677326baffe050afd6750c6c1f79b33eaa375 commit e31677326baffe050afd6750c6c1f79b33eaa375 Author: Scott Graham <scottmg@chromium.org> Date: Wed Feb 07 21:54:16 2018 fuchsia: Disable TaskSchedulerWorkerPoolBlockingTest.MaximumWorkersTest Most recently https://build.chromium.org/p/chromium.fyi/builders/Fuchsia%20%28dbg%29/builds/15991 TBR: wez@chromium.org Bug: 768436 , 792310 Change-Id: I836a3e918bf67a0780d781bea1b64fa750f75ef3 Reviewed-on: https://chromium-review.googlesource.com/907531 Commit-Queue: Scott Graham <scottmg@chromium.org> Reviewed-by: Scott Graham <scottmg@chromium.org> Cr-Commit-Position: refs/heads/master@{#535157} [modify] https://crrev.com/e31677326baffe050afd6750c6c1f79b33eaa375/testing/buildbot/filters/fuchsia.base_unittests.filter
,
Feb 9 2018
Not sure why we would end up with the worker capacity _exceeding_ the value expected by the test - any ideas, fdoray@?
,
Feb 13 2018
Failed again in Fuchsia Debug at https://ci.chromium.org/buildbot/chromium.fyi/Fuchsia%20%28dbg%29/16189 with: [00568.470] 03920.04338> [3:1891413573:0213/194022.725407:568470394:ERROR:test_launcher.cc(404)] Dumping threads in process 37325 [00568.488] 71168.71194> Backtrace of threads of process 37325: base_unittests__exec [00568.489] 71168.71194> arch: x86_64 [00568.489] 71168.71194> 8 thread(s) ... [00568.494] 71168.71194> <== Thread initial-thread[37367] ==> ... #01: pc 0x7282389cd696 sp 0x2616bf811e88 (<vDSO>,0x6696) #02: pc 0x7282389cd4dc sp 0x2616bf811e90 (<vDSO>,0x64dc) #03: pc 0x6031f4c3022f sp 0x2616bf811ea0 (libc.so,0x4622f) #04: base::PlatformThread::Sleep(base::TimeDelta) at ??:? #05: base::internal::TaskSchedulerWorkerPoolBlockingTest::ExpectWorkerCapacityIncreasesTo(unsigned long) at ??:? #06: base::internal::TaskSchedulerWorkerPoolBlockingTest_ThreadBlockedUnblocked_Test::TestBody() at ??:? #07: void testing::internal::InvokeHelper<void, std::__1::tuple<> >::InvokeMethod<base::RunLoop, void (base::RunLoop::*)()>(base::RunLoop*, void (base::RunLoop::*)(), std::__1::tuple<> const&) at ??:? #08: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) at ??:? #09: testing::Test::Run() at ??:? #10: testing::TestInfo::Run() at ??:? #11: testing::TestCase::Run() at ??:? #12: testing::internal::UnitTestImpl::RunAllTests() at ??:? #13: bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) at ??:? #14: bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) at ??:? #15: testing::UnitTest::Run() at ??:? #16: RUN_ALL_TESTS() at ??:? #17: base::TestSuite::Run() at ??:? #18: void base::internal::FunctorTraits<void (base::WaitableEvent::*)(), void>::Invoke<base::WaitableEvent*>(void (base::WaitableEvent::*)(), base::WaitableEvent*&&) at ??:? #19: void base::internal::InvokeHelper<false, void>::MakeItSo<void (base::WaitableEvent::*)(), base::WaitableEvent*>(void (base::WaitableEvent::*&&)(), base::WaitableEvent*&&) at ??:? #20: void base::internal::Invoker<base::internal::BindState<void (base::WaitableEvent::*)(), base::internal::UnretainedWrapper<base::WaitableEvent> >, void ()>::RunImpl<void (base::WaitableEvent::*)(), std::__1::tuple<base::internal::UnretainedWrapper<base::WaitableEvent> >, 0ul>(void (base::WaitableEvent::*&&)(), std::__1::tuple<base::internal::UnretainedWrapper<base::WaitableEvent> >&&, std::__1::integer_sequence<unsigned long, 0ul>) at ??:? #21: base::internal::Invoker<base::internal::BindState<void (base::WaitableEvent::*)(), base::internal::UnretainedWrapper<base::WaitableEvent> >, void ()>::Run(base::internal::BindStateBase*) at ??:? #22: base::RepeatingCallback<void ()>::Run() const & at ??:? #23: base::(anonymous namespace)::LaunchUnitTestsInternal(base::RepeatingCallback<int ()> const&, unsigned long, int, bool, base::RepeatingCallback<void ()> const&) at ??:? #24: base::LaunchUnitTests(int, char**, base::RepeatingCallback<int ()> const&) at ??:? #25: main at ??:? #26: pc 0x6031f4c0510e sp 0x2616bf812fe0 (libc.so,0x1b10e) #27: pc 0 sp 0x2616bf813000 [00568.516] 71168.71194> <== Thread TaskSchedulerServiceThread[40241] ==> ... #01: pc 0x7282389cd85b sp 0x652fc5843438 (<vDSO>,0x685b) #02: pc 0x7282389cd579 sp 0x652fc5843440 (<vDSO>,0x6579) #03: pc 0x6031f4c2e511 sp 0x652fc5843460 (libc.so,0x44511) #04: pc 0x6031f4c01f48 sp 0x652fc58434a0 (libc.so,0x17f48) #05: base::ConditionVariable::Wait() at ??:? #06: base::WaitableEvent::TimedWaitUntil(base::TimeTicks const&) at ??:? #07: base::WaitableEvent::Wait() at ??:? #08: base::MessagePumpDefault::Run(base::MessagePump::Delegate*) at ??:? #09: base::MessageLoop::Run(bool) at ??:? #10: base::RunLoop::Run() at ??:? #11: base::Thread::Run(base::RunLoop*) at ??:? #12: base::Thread::ThreadMain() at ??:? #13: base::(anonymous namespace)::ThreadFunc(void*) at ??:? #14: pc 0x6031f4c02876 sp 0x652fc5844fe0 (libc.so,0x18876) #15: pc 0x6031f4c786c9 sp 0x652fc5844ff0 (libc.so,0x8e6c9) #16: pc 0 sp 0x652fc5845000 [00568.535] 71168.71194> <== Thread TaskSchedulerAWorker[40263] ==> ... #01: pc 0x7282389cd85b sp 0x5f7e33a0c6d8 (<vDSO>,0x685b) #02: pc 0x7282389cd579 sp 0x5f7e33a0c6e0 (<vDSO>,0x6579) #03: pc 0x6031f4c2e511 sp 0x5f7e33a0c700 (libc.so,0x44511) #04: pc 0x6031f4c01f48 sp 0x5f7e33a0c740 (libc.so,0x17f48) #05: base::ConditionVariable::Wait() at ??:? #06: base::WaitableEvent::TimedWaitUntil(base::TimeTicks const&) at ??:? #07: base::WaitableEvent::Wait() at ??:? #08: base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}::operator()(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&) const at ??:? #09: void base::internal::FunctorTraits<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, void>::Invoke<{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType>({lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, base::RepeatingCallback<void ()>*&&, base::WaitableEvent*&&, base::internal::(anonymous namespace)::NestedBlockingType&&) at ??:? #10: void base::internal::InvokeHelper<false, void>::MakeItSo<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType>(base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, base::RepeatingCallback<void ()>*&&, base::WaitableEvent*&&, base::internal::(anonymous namespace)::NestedBlockingType&&) at ??:? #11: void base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunImpl<{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, std::__1::tuple<base::internal::UnretainedWrapper, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::(anonymous namespace)::NestedBlockingType>, 0ul, 1ul, 2ul>({lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, std::__1::tuple<base::internal::UnretainedWrapper, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::(anonymous namespace)::NestedBlockingType>&&, base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunImpl::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) at ??:? #12: base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunOnce(base::internal::BindStateBase*) at ??:? #13: base::OnceCallback<void ()>::Run() && at ??:? #14: base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) at ??:? #15: base::internal::TaskTracker::RunOrSkipTask(base::internal::Task, base::internal::Sequence*, bool) at ??:? #16: base::internal::TaskTracker::RunNextTask(scoped_refptr<base::internal::Sequence>, base::internal::CanScheduleSequenceObserver*) at ??:? #17: base::internal::SchedulerWorker::Thread::ThreadMain() at ??:? #18: base::(anonymous namespace)::ThreadFunc(void*) at ??:? #19: pc 0x6031f4c02876 sp 0x5f7e33a0dfe0 (libc.so,0x18876) #20: pc 0x6031f4c786c9 sp 0x5f7e33a0dff0 (libc.so,0x8e6c9) #21: pc 0 sp 0x5f7e33a0e000 [00568.552] 71168.71194> <== Thread TaskSchedulerAWorker[40279] ==> ... #01: pc 0x7282389cd85b sp 0x3181d88436d8 (<vDSO>,0x685b) #02: pc 0x7282389cd579 sp 0x3181d88436e0 (<vDSO>,0x6579) #03: pc 0x6031f4c2e511 sp 0x3181d8843700 (libc.so,0x44511) #04: pc 0x6031f4c01f48 sp 0x3181d8843740 (libc.so,0x17f48) #05: base::ConditionVariable::Wait() at ??:? #06: base::WaitableEvent::TimedWaitUntil(base::TimeTicks const&) at ??:? #07: base::WaitableEvent::Wait() at ??:? #08: base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}::operator()(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&) const at ??:? #09: void base::internal::FunctorTraits<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, void>::Invoke<{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType>({lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, base::RepeatingCallback<void ()>*&&, base::WaitableEvent*&&, base::internal::(anonymous namespace)::NestedBlockingType&&) at ??:? #10: void base::internal::InvokeHelper<false, void>::MakeItSo<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType>(base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, base::RepeatingCallback<void ()>*&&, base::WaitableEvent*&&, base::internal::(anonymous namespace)::NestedBlockingType&&) at ??:? #11: void base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunImpl<{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, std::__1::tuple<base::internal::UnretainedWrapper, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::(anonymous namespace)::NestedBlockingType>, 0ul, 1ul, 2ul>({lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, std::__1::tuple<base::internal::UnretainedWrapper, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::(anonymous namespace)::NestedBlockingType>&&, base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunImpl::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) at ??:? #12: base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunOnce(base::internal::BindStateBase*) at ??:? #13: base::OnceCallback<void ()>::Run() && at ??:? #14: base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) at ??:? #15: base::internal::TaskTracker::RunOrSkipTask(base::internal::Task, base::internal::Sequence*, bool) at ??:? #16: base::internal::TaskTracker::RunNextTask(scoped_refptr<base::internal::Sequence>, base::internal::CanScheduleSequenceObserver*) at ??:? #17: base::internal::SchedulerWorker::Thread::ThreadMain() at ??:? #18: base::(anonymous namespace)::ThreadFunc(void*) at ??:? #19: pc 0x6031f4c02876 sp 0x3181d8844fe0 (libc.so,0x18876) #20: pc 0x6031f4c786c9 sp 0x3181d8844ff0 (libc.so,0x8e6c9) #21: pc 0 sp 0x3181d8845000 [00568.566] 71168.71194> <== Thread TaskSchedulerAWorker[40286] ==> ... #01: pc 0x7282389cd85b sp 0x342b49ebe6d8 (<vDSO>,0x685b) #02: pc 0x7282389cd579 sp 0x342b49ebe6e0 (<vDSO>,0x6579) #03: pc 0x6031f4c2e511 sp 0x342b49ebe700 (libc.so,0x44511) #04: pc 0x6031f4c01f48 sp 0x342b49ebe740 (libc.so,0x17f48) #05: base::ConditionVariable::Wait() at ??:? #06: base::WaitableEvent::TimedWaitUntil(base::TimeTicks const&) at ??:? #07: base::WaitableEvent::Wait() at ??:? #08: base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}::operator()(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&) const at ??:? #09: void base::internal::FunctorTraits<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, void>::Invoke<{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType>({lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, base::RepeatingCallback<void ()>*&&, base::WaitableEvent*&&, base::internal::(anonymous namespace)::NestedBlockingType&&) at ??:? #10: void base::internal::InvokeHelper<false, void>::MakeItSo<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType>(base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, base::RepeatingCallback<void ()>*&&, base::WaitableEvent*&&, base::internal::(anonymous namespace)::NestedBlockingType&&) at ??:? #11: void base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunImpl<{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, std::__1::tuple<base::internal::UnretainedWrapper, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::(anonymous namespace)::NestedBlockingType>, 0ul, 1ul, 2ul>({lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, std::__1::tuple<base::internal::UnretainedWrapper, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::(anonymous namespace)::NestedBlockingType>&&, base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunImpl::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) at ??:? #12: base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunOnce(base::internal::BindStateBase*) at ??:? #13: base::OnceCallback<void ()>::Run() && at ??:? #14: base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) at ??:? #15: base::internal::TaskTracker::RunOrSkipTask(base::internal::Task, base::internal::Sequence*, bool) at ??:? #16: base::internal::TaskTracker::RunNextTask(scoped_refptr<base::internal::Sequence>, base::internal::CanScheduleSequenceObserver*) at ??:? #17: base::internal::SchedulerWorker::Thread::ThreadMain() at ??:? #18: base::(anonymous namespace)::ThreadFunc(void*) at ??:? #19: pc 0x6031f4c02876 sp 0x342b49ebffe0 (libc.so,0x18876) #20: pc 0x6031f4c786c9 sp 0x342b49ebfff0 (libc.so,0x8e6c9) #21: pc 0 sp 0x342b49ec0000 [00568.584] 71168.71194> <== Thread TaskSchedulerAWorker[40293] ==> ... #01: pc 0x7282389cd85b sp 0x77a4a54cf4a8 (<vDSO>,0x685b) #02: pc 0x7282389cd579 sp 0x77a4a54cf4b0 (<vDSO>,0x6579) #03: pc 0x6031f4c2e511 sp 0x77a4a54cf4d0 (libc.so,0x44511) #04: pc 0x6031f4c01f48 sp 0x77a4a54cf510 (libc.so,0x17f48) #05: base::ConditionVariable::Wait() at ??:? #06: base::WaitableEvent::TimedWaitUntil(base::TimeTicks const&) at ??:? #07: base::WaitableEvent::Wait() at ??:? #08: base::internal::SchedulerWorker::Delegate::WaitForWork(base::WaitableEvent*) at ??:? #09: base::internal::SchedulerWorker::Thread::ThreadMain() at ??:? #10: base::(anonymous namespace)::ThreadFunc(void*) at ??:? #11: pc 0x6031f4c02876 sp 0x77a4a54cffe0 (libc.so,0x18876) #12: pc 0x6031f4c786c9 sp 0x77a4a54cfff0 (libc.so,0x8e6c9) #13: pc 0 sp 0x77a4a54d0000 [00568.600] 71168.71194> <== Thread TaskSchedulerAWorker[40351] ==> ... #01: pc 0x7282389cd85b sp 0x4e4ba0b7b6d8 (<vDSO>,0x685b) #02: pc 0x7282389cd579 sp 0x4e4ba0b7b6e0 (<vDSO>,0x6579) #03: pc 0x6031f4c2e511 sp 0x4e4ba0b7b700 (libc.so,0x44511) #04: pc 0x6031f4c01f48 sp 0x4e4ba0b7b740 (libc.so,0x17f48) #05: base::ConditionVariable::Wait() at ??:? #06: base::WaitableEvent::TimedWaitUntil(base::TimeTicks const&) at ??:? #07: base::WaitableEvent::Wait() at ??:? #08: base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}::operator()(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&) const at ??:? #09: void base::internal::FunctorTraits<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, void>::Invoke<{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType>({lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, base::RepeatingCallback<void ()>*&&, base::WaitableEvent*&&, base::internal::(anonymous namespace)::NestedBlockingType&&) at ??:? #10: void base::internal::InvokeHelper<false, void>::MakeItSo<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType>(base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, base::RepeatingCallback<void ()>*&&, base::WaitableEvent*&&, base::internal::(anonymous namespace)::NestedBlockingType&&) at ??:? #11: void base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunImpl<{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, std::__1::tuple<base::internal::UnretainedWrapper, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::(anonymous namespace)::NestedBlockingType>, 0ul, 1ul, 2ul>({lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}&&, std::__1::tuple<base::internal::UnretainedWrapper, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::(anonymous namespace)::NestedBlockingType>&&, base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunImpl::integer_sequence<unsigned long, 0ul, 1ul, 2ul>) at ??:? #12: base::internal::Invoker<base::internal::BindState<base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}, base::internal::UnretainedWrapper<base::RepeatingCallback<void ()> >, base::internal::TaskSchedulerWorkerPoolBlockingTest::SaturateWithBlockingTasks(base::internal::(anonymous namespace)::NestedBlockingType const&)::{lambda(base::RepeatingCallback<void ()>*, base::WaitableEvent*, base::internal::(anonymous namespace)::NestedBlockingType const&)#1}<base::WaitableEvent>, base::internal::(anonymous namespace)::NestedBlockingType>, void ()>::RunOnce(base::internal::BindStateBase*) at ??:? #13: base::OnceCallback<void ()>::Run() && at ??:? #14: base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) at ??:? #15: base::internal::TaskTracker::RunOrSkipTask(base::internal::Task, base::internal::Sequence*, bool) at ??:? #16: base::internal::TaskTracker::RunNextTask(scoped_refptr<base::internal::Sequence>, base::internal::CanScheduleSequenceObserver*) at ??:? #17: base::internal::SchedulerWorker::Thread::ThreadMain() at ??:? #18: base::(anonymous namespace)::ThreadFunc(void*) at ??:? #19: pc 0x6031f4c02876 sp 0x4e4ba0b7cfe0 (libc.so,0x18876) #20: pc 0x6031f4c786c9 sp 0x4e4ba0b7cff0 (libc.so,0x8e6c9) #21: pc 0 sp 0x4e4ba0b7d000 [00568.617] 71168.71194> <== Thread TaskSchedulerAWorker[40363] ==> ... #01: pc 0x7282389cd85b sp 0x1a7d861c4a8 (<vDSO>,0x685b) #02: pc 0x7282389cd579 sp 0x1a7d861c4b0 (<vDSO>,0x6579) #03: pc 0x6031f4c2e511 sp 0x1a7d861c4d0 (libc.so,0x44511) #04: pc 0x6031f4c01f48 sp 0x1a7d861c510 (libc.so,0x17f48) #05: base::ConditionVariable::Wait() at ??:? #06: base::WaitableEvent::TimedWaitUntil(base::TimeTicks const&) at ??:? #07: base::WaitableEvent::Wait() at ??:? #08: base::internal::SchedulerWorker::Delegate::WaitForWork(base::WaitableEvent*) at ??:? #09: base::internal::SchedulerWorker::Thread::ThreadMain() at ??:? #10: base::(anonymous namespace)::ThreadFunc(void*) at ??:? #11: pc 0x6031f4c02876 sp 0x1a7d861cfe0 (libc.so,0x18876) #12: pc 0x6031f4c786c9 sp 0x1a7d861cff0 (libc.so,0x8e6c9) #13: pc 0 sp 0x1a7d861d000 ... [00568.743] 03920.03967> [2926/2930] TaskSchedulerWorkerPoolBlockingTest.ThreadBlockedUnblocked/MAY_BLOCK (TIMED OUT)
,
Feb 22 2018
Failed again under Fuchsia/x64/Debug in https://ci.chromium.org/buildbot/chromium.fyi/Fuchsia%20(dbg)/16506 with test TaskSchedulerWorkerPoolBlockingTest.WorkersIdleWhenOverCapacity/MAY_BLOCK
,
Feb 22 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/92a8cd0fa676e90318fca3b78871477dc0448e61 commit 92a8cd0fa676e90318fca3b78871477dc0448e61 Author: Wez <wez@chromium.org> Date: Thu Feb 22 17:07:42 2018 Filter all TaskSchedulerWorkerPoolBlockingTests which wait on capacity. Several of these tests wait until the worker pool's capacity reaches an expected value, which appears not to be a deterministic operation, and fails often on the Fuchsia bots. Also adds a filter for a flaking Mojo system unit-test. Bug: 768436 , 792310 , 814596 Change-Id: If453b3cda30747c995871fbeae6cb23830f02a88 Reviewed-on: https://chromium-review.googlesource.com/930476 Reviewed-by: Scott Graham <scottmg@chromium.org> Commit-Queue: Wez <wez@chromium.org> Cr-Commit-Position: refs/heads/master@{#538463} [modify] https://crrev.com/92a8cd0fa676e90318fca3b78871477dc0448e61/testing/buildbot/filters/fuchsia.base_unittests.filter [modify] https://crrev.com/92a8cd0fa676e90318fca3b78871477dc0448e61/testing/buildbot/filters/fuchsia.mojo_system_unittests.filter
,
Apr 12 2018
@fdoray: could the issues with capacity tests be due to issue 757897 ?
,
Apr 27 2018
,
Apr 27 2018
Francois and I just sat down and figured this one out. Turns out base is hosing itself here..! WaitableEvent::Wait() has a ScopedBlockingCall::MAY_BLOCK which means that all of these tests using WaitableEvent for synchronization can also result in increasing the pool's capacity if the test is slow enough (e.g. on Fuchsia+QEMU) for the MAY_BLOCK timeout to trigger..! We already have ScopedClearBlockingObserverForTesting to solve this in other tests but forgot to apply it to these tests. Maybe we need a more robust solution..?
,
Apr 30 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cfcfba6675d0dc1d3cce898a039fed92d8fe17ad commit cfcfba6675d0dc1d3cce898a039fed92d8fe17ad Author: Francois Doray <fdoray@chromium.org> Date: Mon Apr 30 13:18:18 2018 [TaskScheduler] Clear blocking observer when using WaitableEvent in tests. When a task posted to TaskScheduler waits on a WaitableEvent, the pool capacity is automatically incremented after a short delay (https://cs.chromium.org/chromium/src/base/synchronization/waitable_event_win.cc?l=72&rcl=c60b0bcd6830c32c30128867e55a53f27642df5f and https://cs.chromium.org/chromium/src/base/synchronization/waitable_event_posix.cc?l=166&rcl=c60b0bcd6830c32c30128867e55a53f27642df5f and https://cs.chromium.org/chromium/src/base/synchronization/waitable_event_mac.cc?l=115&rcl=c60b0bcd6830c32c30128867e55a53f27642df5f). This is desirable in production (if a task blocks for a long time, another thread is created and the number of tasks that are using the CPU stays constant). However, it is undesirable when a WaitableEvent is used in TaskScheduler tests, because it leads to hard to predict changes of pool capacity. This CL adds a ScopedClearBlockingObserverForTesting annotation to all WaitableEvent::Wait that happen in code that tests SchedulerWorkerPoolImpl, to avoid these hard to predict changes of pool capacity. The annotation is not needed when the WaitableEvent::Wait doesn't happen on a thread managed by SchedulerWorkerPoolImpl, because that already has no effect on pool capacity. Bug: 768436 Change-Id: Ie166ca55f914d89c5dd0fe6dad9ae1533e0f6c29 Reviewed-on: https://chromium-review.googlesource.com/1033533 Reviewed-by: Gabriel Charette <gab@chromium.org> Commit-Queue: François Doray <fdoray@chromium.org> Cr-Commit-Position: refs/heads/master@{#554732} [modify] https://crrev.com/cfcfba6675d0dc1d3cce898a039fed92d8fe17ad/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc [modify] https://crrev.com/cfcfba6675d0dc1d3cce898a039fed92d8fe17ad/base/task_scheduler/test_task_factory.cc [modify] https://crrev.com/cfcfba6675d0dc1d3cce898a039fed92d8fe17ad/base/task_scheduler/test_task_factory.h
,
May 2 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4ce50aa89014267e7589941571976204c6928991 commit 4ce50aa89014267e7589941571976204c6928991 Author: Francois Doray <fdoray@chromium.org> Date: Wed May 02 15:21:47 2018 TaskScheduler: Enable TaskSchedulerWorkerPoolBlockingTest.* on fuchsia. Flakyness was fixed by https://chromium-review.googlesource.com/1033533 Bug: 768436 , 792310 Change-Id: I8720a1ae503d096419bcc368c3629bcaa6679e74 Reviewed-on: https://chromium-review.googlesource.com/1039767 Reviewed-by: François Doray <fdoray@chromium.org> Reviewed-by: Gabriel Charette <gab@chromium.org> Reviewed-by: Wez <wez@chromium.org> Commit-Queue: François Doray <fdoray@chromium.org> Cr-Commit-Position: refs/heads/master@{#555393} [modify] https://crrev.com/4ce50aa89014267e7589941571976204c6928991/testing/buildbot/filters/fuchsia.base_unittests.filter
,
May 3 2018
|
||||
►
Sign in to add a comment |
||||
Comment 1 by scottmg@chromium.org
, Feb 7 2018