From f8ee65ead6e16cbb1c4311b9fd596a3435ec2f9a Mon Sep 17 00:00:00 2001 From: sprang Date: Tue, 28 Feb 2017 08:49:33 -0800 Subject: [PATCH] Fix rare race in ViEEncoderTest.UMACpuLimitedResolutionInPercent The test aims to synchronize by waiting for the last sent frame, using sink_.WaitForEncodedFrame(). Then it stops the vie_encoder instance and finally reset the SendStatsProxy to trigger UMA stats to be registered. The problem is that the callback that triggers WaitForEncodedFrame() to release will call FrameSent() on the overuse detecter just after that, and so it may try to update the stats proxy while it is being deleted. To prevent this, simply destroy the vie_encoder instance too, so that we know that the task queue has been stopped. BUG=None Review-Url: https://codereview.webrtc.org/2720183004 Cr-Commit-Position: refs/heads/master@{#16914} --- webrtc/video/vie_encoder_unittest.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webrtc/video/vie_encoder_unittest.cc b/webrtc/video/vie_encoder_unittest.cc index 320f664840..2c5609756d 100644 --- a/webrtc/video/vie_encoder_unittest.cc +++ b/webrtc/video/vie_encoder_unittest.cc @@ -1057,8 +1057,9 @@ TEST_F(ViEEncoderTest, UMACpuLimitedResolutionInPercent) { } vie_encoder_->Stop(); - + vie_encoder_.reset(); stats_proxy_.reset(); + EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent")); EXPECT_EQ(