From 285e9bc84d75a8cbf6e64e4d4cb4b458e525be51 Mon Sep 17 00:00:00 2001 From: "andresp@webrtc.org" Date: Mon, 7 Jul 2014 20:27:33 +0000 Subject: [PATCH] Fix potential deadlock in webrtc/system_wrappers/source/logging_unittest.cc. crit_ should not be held while calling Trace. BUG=3003 R=henrike@webrtc.org, pbos@webrtc.org Review URL: https://webrtc-codereview.appspot.com/17859005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6616 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/build/tsan_suppressions.cc | 1 - webrtc/system_wrappers/source/logging_unittest.cc | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/webrtc/build/tsan_suppressions.cc b/webrtc/build/tsan_suppressions.cc index 4002d3c2ff..aac640de59 100644 --- a/webrtc/build/tsan_suppressions.cc +++ b/webrtc/build/tsan_suppressions.cc @@ -65,7 +65,6 @@ char kTSanDefaultSuppressions[] = "deadlock:webrtc::ProcessThreadImpl::RegisterModule\n" "deadlock:webrtc::RTCPReceiver::SetSsrcs\n" "deadlock:webrtc::RTPSenderAudio::RegisterAudioPayload\n" -"deadlock:webrtc/system_wrappers/source/logging_unittest.cc\n" "deadlock:webrtc::test::UdpSocketManagerPosixImpl::RemoveSocket\n" "deadlock:webrtc::vcm::VideoReceiver::RegisterPacketRequestCallback\n" "deadlock:webrtc::VideoSendStreamTest_SuspendBelowMinBitrate_Test::TestBody\n" diff --git a/webrtc/system_wrappers/source/logging_unittest.cc b/webrtc/system_wrappers/source/logging_unittest.cc index 19f13940cc..d1eab32e4b 100644 --- a/webrtc/system_wrappers/source/logging_unittest.cc +++ b/webrtc/system_wrappers/source/logging_unittest.cc @@ -51,17 +51,16 @@ class LoggingTest : public ::testing::Test, public TraceCallback { } void TearDown() { - CriticalSectionScoped cs(crit_.get()); Trace::SetTraceCallback(NULL); Trace::ReturnTrace(); + CriticalSectionScoped cs(crit_.get()); ASSERT_EQ(kTraceNone, level_) << "Print() was not called"; } scoped_ptr crit_; scoped_ptr cv_; - TraceLevel level_; - int length_; - std::ostringstream expected_log_; + TraceLevel level_ GUARDED_BY(crit_); + std::ostringstream expected_log_ GUARDED_BY(crit_); }; TEST_F(LoggingTest, LogStream) {