From 6a32de4285f37499336ec87f199fee75c130dcc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Wed, 9 Jan 2019 15:46:36 +0100 Subject: [PATCH] Fix potential race in CallTest. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The FrameGeneratorCapturer instances continue to live after RunBaseTest() returns, and have their own internal task queues. This means any class that listens for frames may be called after return from RunBaseTest(), at which point they may be destroyed. This CL makes sure we remove any capturer before returning. A specific example of this problem is VideoSendStreamTest.SuspendBelowMinBitrate Bug: None Change-Id: I857566301acce3e32c0888c7a1d2ee3470e6eb28 Reviewed-on: https://webrtc-review.googlesource.com/c/116684 Commit-Queue: Erik Språng Reviewed-by: Niels Moller Cr-Commit-Position: refs/heads/master@{#26375} --- test/call_test.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/call_test.cc b/test/call_test.cc index fff03237db..57a5d9fe75 100644 --- a/test/call_test.cc +++ b/test/call_test.cc @@ -37,6 +37,7 @@ CallTest::CallTest() audio_send_config_(/*send_transport=*/nullptr, /*media_transport=*/nullptr), audio_send_stream_(nullptr), + frame_generator_capturer_(nullptr), fake_encoder_factory_([this]() { std::unique_ptr fake_encoder; if (video_encoder_configs_[0].codec_type == kVideoCodecVP8) { @@ -175,6 +176,8 @@ void CallTest::RunBaseTest(BaseTest* test) { DestroyStreams(); send_transport_.reset(); receive_transport_.reset(); + frame_generator_capturer_ = nullptr; + video_sources_.clear(); DestroyCalls(); }); }