New issue
Advanced search Search tips

Issue 831327 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 22
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Fuchsia
Pri: 1
Type: Bug



Sign in to add a comment

fuchsia x64 flake - WebMediaPlayerMSTest.StopsCreatingHardwareFramesWhenHiddenOrClosed

Project Member Reported by billorr@chromium.org, Apr 10 2018

Issue description

https://ci.chromium.org/buildbot/tryserver.chromium.linux/fuchsia_x64/104945

[00339.033] 03995.04064> [232128:1715345595:0410/202242.962355:332310847:ERROR:base_paths_fuchsia.cc(37)] Not implemented reached in bool base::PathProviderFuchsia(int, base::FilePath *)
[00339.033] 03995.04064> ../../content/renderer/media/stream/webmediaplayer_ms_unittest.cc:1132: Failure
[00339.033] 03995.04064> Expected equality of these values:
[00339.044] 03995.04064>   0u
[00339.044] 03995.04064>     Which is: 0
[00339.044] 03995.04064>   frame_ready_cbs_.size()
[00339.045] 03995.04064>     Which is: 1
[00339.045] 03995.04064> unknown file: Failure


 
Owner: w...@chromium.org
Status: Assigned (was: Available)
Flaked again in https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/fuchsia-fyi-arm64-rel/406 with:

[ RUN      ] WebMediaPlayerMSTest.StopsCreatingHardwareFramesWhenHiddenOrClosed
../../content/renderer/media/stream/webmediaplayer_ms_unittest.cc:1171: Failure
Expected equality of these values:
  0u
    Which is: 0
  frame_ready_cbs_.size()
    Which is: 1
Stack trace:
#00: testing::internal::AssertHelper::operator=(testing::Message const&) const at gtest.cc:?
#01: content::WebMediaPlayerMSTest_StopsCreatingHardwareFramesWhenHiddenOrClosed_Test::TestBody() at webmediaplayer_ms_unittest.cc:?

unknown file: Failure

Unexpected mock function call - returning directly.
    Function call: DoSetCcLayer(false)
Google Mock tried the following 1 expectation, but it didn't match:

../../content/renderer/media/stream/webmediaplayer_ms_unittest.cc:1154: EXPECT_CALL(*this, DoSetCcLayer(true))...
  Expected arg #0: is equal to true
           Actual: false
         Expected: to be called once
           Actual: never called - unsatisfied and active
Stack trace:
#00: testing::internal::AssertHelper::operator=(testing::Message const&) const at gtest.cc:?
#01: testing::internal::GoogleTestFailureReporter::ReportFailure(testing::internal::FailureReporterInterface::FailureType, char const*, int, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&) at gmock-internal-utils.cc:?
#02: testing::internal::UntypedFunctionMockerBase::UntypedInvokeWith(void*) at gmock-spec-builders.cc:?
#03: content::WebMediaPlayerMSTest::SetCcLayer(cc::Layer*) at webmediaplayer_ms_unittest.cc:?
#04: content::WebMediaPlayerMS::~WebMediaPlayerMS() at webmediaplayer_ms.cc:?
#05: content::WebMediaPlayerMS::~WebMediaPlayerMS() at webmediaplayer_ms.cc:?
#06: content::WebMediaPlayerMSTest::~WebMediaPlayerMSTest() at webmediaplayer_ms_unittest.cc:?
#07: content::WebMediaPlayerMSTest_OpacityChange_Test::~WebMediaPlayerMSTest_OpacityChange_Test() at webmediaplayer_ms_unittest.cc:?


GMOCK WARNING:
Uninteresting mock function call - returning directly.
    Function call: Abort()
NOTE: You can safely ignore the above warning unless this call should not happen.  Do not suppress it by blindly adding an EXPECT_CALL() if you don't mean to enforce the call.  See https://github.com/google/googletest/blob/master/googlemock/docs/CookBook.md#knowing-when-to-expect for details.
../../content/renderer/media/stream/webmediaplayer_ms_unittest.cc:1160: Failure
Actual function call count doesn't match EXPECT_CALL(*this, CheckSizeChanged(provider->get_standard_size()))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
Stack trace:
#00: testing::internal::AssertHelper::operator=(testing::Message const&) const at gtest.cc:?
#01: testing::internal::GoogleTestFailureReporter::ReportFailure(testing::internal::FailureReporterInterface::FailureType, char const*, int, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&) at gmock-internal-utils.cc:?
#02: testing::internal::UntypedFunctionMockerBase::VerifyAndClearExpectationsLocked() at gmock-spec-builders.cc:?
#03: content::WebMediaPlayerMSTest::~WebMediaPlayerMSTest() at webmediaplayer_ms_unittest.cc:?
#04: content::WebMediaPlayerMSTest_OpacityChange_Test::~WebMediaPlayerMSTest_OpacityChange_Test() at webmediaplayer_ms_unittest.cc:?

../../content/renderer/media/stream/webmediaplayer_ms_unittest.cc:1157: Failure
Actual function call count doesn't match EXPECT_CALL(*this, DoReadyStateChanged( blink::WebMediaPlayer::kReadyStateHaveMetadata))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
Stack trace:
#00: testing::internal::AssertHelper::operator=(testing::Message const&) const at gtest.cc:?
#01: testing::internal::GoogleTestFailureReporter::ReportFailure(testing::internal::FailureReporterInterface::FailureType, char const*, int, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&) at gmock-internal-utils.cc:?
#02: testing::internal::UntypedFunctionMockerBase::VerifyAndClearExpectationsLocked() at gmock-spec-builders.cc:?
#03: content::WebMediaPlayerMSTest::~WebMediaPlayerMSTest() at webmediaplayer_ms_unittest.cc:?
#04: content::WebMediaPlayerMSTest_OpacityChange_Test::~WebMediaPlayerMSTest_OpacityChange_Test() at webmediaplayer_ms_unittest.cc:?

../../content/renderer/media/stream/webmediaplayer_ms_unittest.cc:1159: Failure
Actual function call count doesn't match EXPECT_CALL(*this, DoReadyStateChanged( blink::WebMediaPlayer::kReadyStateHaveEnoughData))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
Stack trace:
#00: testing::internal::AssertHelper::operator=(testing::Message const&) const at gtest.cc:?
#01: testing::internal::GoogleTestFailureReporter::ReportFailure(testing::internal::FailureReporterInterface::FailureType, char const*, int, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&) at gmock-internal-utils.cc:?
#02: testing::internal::UntypedFunctionMockerBase::VerifyAndClearExpectationsLocked() at gmock-spec-builders.cc:?
#03: content::WebMediaPlayerMSTest::~WebMediaPlayerMSTest() at webmediaplayer_ms_unittest.cc:?
#04: content::WebMediaPlayerMSTest_OpacityChange_Test::~WebMediaPlayerMSTest_OpacityChange_Test() at webmediaplayer_ms_unittest.cc:?

../../content/renderer/media/stream/webmediaplayer_ms_unittest.cc:1154: Failure
Actual function call count doesn't match EXPECT_CALL(*this, DoSetCcLayer(true))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
Stack trace:
#00: testing::internal::AssertHelper::operator=(testing::Message const&) const at gtest.cc:?
#01: testing::internal::GoogleTestFailureReporter::ReportFailure(testing::internal::FailureReporterInterface::FailureType, char const*, int, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&) at gmock-internal-utils.cc:?
#02: testing::internal::UntypedFunctionMockerBase::VerifyAndClearExpectationsLocked() at gmock-spec-builders.cc:?
#03: content::WebMediaPlayerMSTest::~WebMediaPlayerMSTest() at webmediaplayer_ms_unittest.cc:?
#04: content::WebMediaPlayerMSTest_OpacityChange_Test::~WebMediaPlayerMSTest_OpacityChange_Test() at webmediaplayer_ms_unittest.cc:?

../../content/renderer/media/stream/webmediaplayer_ms_unittest.cc:1155: Failure
Actual function call count doesn't match EXPECT_CALL(*this, DoStartRendering())...
         Expected: to be called once
           Actual: never called - unsatisfied and active
Stack trace:
#00: testing::internal::AssertHelper::operator=(testing::Message const&) const at gtest.cc:?
#01: testing::internal::GoogleTestFailureReporter::ReportFailure(testing::internal::FailureReporterInterface::FailureType, char const*, int, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&) at gmock-internal-utils.cc:?
#02: testing::internal::UntypedFunctionMockerBase::VerifyAndClearExpectationsLocked() at gmock-spec-builders.cc:?
#03: content::WebMediaPlayerMSTest::~WebMediaPlayerMSTest() at webmediaplayer_ms_unittest.cc:?
#04: content::WebMediaPlayerMSTest_OpacityChange_Test::~WebMediaPlayerMSTest_OpacityChange_Test() at webmediaplayer_ms_unittest.cc:?

[  FAILED  ] WebMediaPlayerMSTest.StopsCreatingHardwareFramesWhenHiddenOrClosed (243 ms)
Components: Tests>Flaky
Labels: -Pri-3 M-70 Pri-1
Status: Started (was: Assigned)
Flaked again in https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/fuchsia-fyi-arm64-rel/607 with the same again.

It seems that successful runs of this test seem to take ~500ms, whereas the failed runs take only ~300ms.
Three out of the four most recent failures were the "hidden" check:

  // Hidden should stop passing frames to GpuMemoryBufferVideoFramePool.
  player_->OnFrameHidden();
  provider->QueueFrames(timestamps, false);
  message_loop_controller_.RunAndWaitForStatus(
      media::PipelineStatus::PIPELINE_OK);
  ASSERT_EQ(0u, frame_ready_cbs_.size());

but one of them was the later instance of the "closed" check:

  // Hidden should stop passing frames to GpuMemoryBufferVideoFramePool.
  player_->OnFrameClosed();
  provider->QueueFrames(timestamps, false);
  message_loop_controller_.RunAndWaitForStatus(
      media::PipelineStatus::PIPELINE_OK);
  ASSERT_EQ(0u, frame_ready_cbs_.size());

Not clear whether the test is simply failing to synchronize with the pipeline properly, or the pipeline's hidden/closed behaviour is actually flaky.
This and WebMediaPlayerMSTest.CreateHardwareFrames flaked again in https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/fuchsia-fyi-arm64-rel/623.

I've tracked this down to a race-condition between the delayed InjectFrame posted by InjectFrame itself, and the task posted to quit the WaitableMessageLoopEvent - these tests flake when the delayed InjectFrame becomes due-to-run before the WaitableMessageLoopEvent::OnCallback task is even posted.
Cc: qiangchen@chromium.org emir...@chromium.org
Uploaded a trivial repro for this issue to https://chromium-review.googlesource.com/c/chromium/src/+/1159161

I'll try a potential work-around, or disable these tests pending further investigation if that can't be made to work.
Project Member

Comment 6 by bugdroid1@chromium.org, Aug 2

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

commit 8dbfd9761cf2d3056ba65923a777970555695fe0
Author: Wez <wez@chromium.org>
Date: Thu Aug 02 23:03:21 2018

Disable some flaky WebMediaPlayerMSTest tests.

Two tests flake under CPU scheduling delays, e.g. when running under
slow emulation or on a system under high load.

TBR=emircan

Bug:  831327 
Change-Id: Ifb25cdcad5ca5b663dc0515078551a4311ed756b
Reviewed-on: https://chromium-review.googlesource.com/1161340
Reviewed-by: Wez <wez@chromium.org>
Reviewed-by: Emircan Uysaler <emircan@chromium.org>
Commit-Queue: Wez <wez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580364}
[modify] https://crrev.com/8dbfd9761cf2d3056ba65923a777970555695fe0/content/renderer/media/stream/webmediaplayer_ms_unittest.cc

Owner: emir...@chromium.org
Status: Assigned (was: Started)
Cc: w...@chromium.org sergeyu@chromium.org scottmg@chromium.org
 Issue 819924  has been merged into this issue.
Project Member

Comment 9 by bugdroid1@chromium.org, Aug 22

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

commit 033305687e217ab2484ab9facdc88b101e87592d
Author: Emircan Uysaler <emircan@chromium.org>
Date: Wed Aug 22 19:47:27 2018

Fix flaky WebMediaPlayerMSTest

Bug:  831327 
Change-Id: I97741f8ae23337907ba05bb1de2285f9737ab6cc
Reviewed-on: https://chromium-review.googlesource.com/1184380
Reviewed-by: Christian Fremerey <chfremer@chromium.org>
Commit-Queue: Emircan Uysaler <emircan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585209}
[modify] https://crrev.com/033305687e217ab2484ab9facdc88b101e87592d/content/renderer/media/stream/webmediaplayer_ms_unittest.cc

Status: Fixed (was: Assigned)

Sign in to add a comment