Fix deadlock in webrtc_perf_tests
Reenable hanging tests on Mac.
Deadlock happened because the following locks were grabbed by two threads at the end of a test:
Thread 1:
CapturedFrameForwarder::AddOrUpdateSink() locks CapturedFrameForwarder::crit_ and calls
FrameGeneratorCapturer::AddOrUpdateSink() what tries to lock FrameGeneratorCapturer::lock_.
Thread 2:
FrameGeneratorCapturer::InsertFrame() locks FrameGeneratorCapturer::lock_ and calls
CapturedFrameForwarder::OnFrame() which tries to lock CapturedFrameForwarder::crit_.
So two threads are locking two same locks in different orders which may cause deadlock.
BUG=webrtc:7870
Review-Url: https://codereview.webrtc.org/2955083002
Cr-Commit-Position: refs/heads/master@{#18783}
diff --git a/webrtc/video/full_stack_tests.cc b/webrtc/video/full_stack_tests.cc
index 3e57816..8299771 100644
--- a/webrtc/video/full_stack_tests.cc
+++ b/webrtc/video/full_stack_tests.cc
@@ -465,8 +465,7 @@
#endif // !defined(RTC_DISABLE_VP9)
// Android bots can't handle FullHD, so disable the test.
-// Test is not working correctly on Mac: webrtc:7870.
-#if defined(WEBRTC_ANDROID) || defined(WEBRTC_MAC)
+#if defined(WEBRTC_ANDROID)
#define MAYBE_SimulcastFullHdOveruse DISABLED_SimulcastFullHdOveruse
#else
#define MAYBE_SimulcastFullHdOveruse SimulcastFullHdOveruse
diff --git a/webrtc/video/video_quality_test.cc b/webrtc/video/video_quality_test.cc
index 4357276..37b4786 100644
--- a/webrtc/video/video_quality_test.cc
+++ b/webrtc/video/video_quality_test.cc
@@ -939,9 +939,11 @@
// Called when |send_stream_.SetSource()| is called.
void AddOrUpdateSink(rtc::VideoSinkInterface<VideoFrame>* sink,
const rtc::VideoSinkWants& wants) override {
- rtc::CritScope lock(&crit_);
- RTC_DCHECK(!send_stream_input_ || send_stream_input_ == sink);
- send_stream_input_ = sink;
+ {
+ rtc::CritScope lock(&crit_);
+ RTC_DCHECK(!send_stream_input_ || send_stream_input_ == sink);
+ send_stream_input_ = sink;
+ }
if (video_capturer_) {
video_capturer_->AddOrUpdateSink(this, wants);
}