Cleanup scripts and suppressions for TSan v1

Since we don't use it anymore on Linux and don't plan
to ever support it for Windows.

BUG=
R=pbos@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/31649004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7420 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
kjellander@webrtc.org 2014-10-10 09:18:34 +00:00
parent fae6bc4106
commit afede835ee
20 changed files with 5 additions and 1648 deletions

View File

@ -1,4 +0,0 @@
# https://code.google.com/p/webrtc/issues/detail?id=2323
AudioDecoderIsacFbTest.EncodeDecode
AudioDecoderIsacFloatTest.EncodeDecode
AudioDecoderIsacSwbTest.EncodeDecode

View File

@ -1,12 +0,0 @@
TODO(wu): https://code.google.com/p/webrtc/issues/detail?id=2380
WebRtcVideoMediaChannelTest.TwoStreamsAddAndRemoveUnsignalledRecv
WebRtcVideoMediaChannelTest.TwoStreamsReUseFirstStream
WebRtcVideoMediaChannelTest.TwoStreamsSendAndFailUnsignalledRecv
WebRtcVideoMediaChannelTest.TwoStreamsSendAndFailUnsignalledRecvInOneToOne
WebRtcVideoMediaChannelTest.TwoStreamsSendAndReceive
WebRtcVideoMediaChannelTest.TwoStreamsSendAndUnsignalledRecv
TODO(pbos): This suppression is overly broad, but offline talks with kjellander@
indicate that we can move over to tsanv2 and deprecate tsanv1, which will remove
the need for tsanv1 suppressions.
WebRtcVideoChannel2BaseTest.*

View File

@ -1,4 +0,0 @@
# TODO(wu): Reenable P2PTransportChannelTest after issue 2158 is resolved.
P2PTransportChannelTest.*
PortTest.TestSendStunMessageAsIce
VoiceChannelTest.TestKeyboardMute

View File

@ -1,7 +0,0 @@
# https://code.google.com/p/webrtc/issues/detail?id=2396
ChannelManagerTest.StartupShutdownOnThread
PortTest.*
P2PTransportChannel*
DtlsTransportChannelTest.*
RelayPortTest.*
PortAllocatorTest.*

View File

@ -1,45 +0,0 @@
# Tests that are failing when run under TSan.
DtmfSenderTest.InsertDtmf
JsepPeerConnectionP2PTestClient.AddDataChannelAfterRenegotiation
JsepPeerConnectionP2PTestClient.GetAudioInputLevelStats
JsepPeerConnectionP2PTestClient.GetAudioOutputLevelStats
JsepPeerConnectionP2PTestClient.GetBytesReceivedStats
JsepPeerConnectionP2PTestClient.GetBytesSentStats
JsepPeerConnectionP2PTestClient.IceRestart
JsepPeerConnectionP2PTestClient.LocalP2PTestAnswerAudio
JsepPeerConnectionP2PTestClient.LocalP2PTestAnswerVideo
JsepPeerConnectionP2PTestClient.LocalP2PTest16To9
JsepPeerConnectionP2PTestClient.LocalP2PTestDataChannel
JsepPeerConnectionP2PTestClient.LocalP2PTestDtls
JsepPeerConnectionP2PTestClient.LocalP2PTestDtmf
JsepPeerConnectionP2PTestClient.LocalP2PTestReceiverDoesntSupportData
JsepPeerConnectionP2PTestClient.LocalP2PTestOfferDtlsButNotSdes
JsepPeerConnectionP2PTestClient.LocalP2PTestOfferSdesToDtls
JsepPeerConnectionP2PTestClient.LocalP2PTestOfferDtlsToSdes
JsepPeerConnectionP2PTestClient.LocalP2PTestWithoutMsid
JsepPeerConnectionP2PTestClient.LocalP2PTestWithVideoDecoderFactory
JsepPeerConnectionP2PTestClient.RegisterDataChannelObserver
JsepPeerConnectionP2PTestClient.UpdateOfferWithRejectedContent
PeerConnectionInterfaceTest.DataChannelCloseWhenPeerConnectionClose
PeerConnectionEndToEndTest.Call
PeerConnectionEndToEndTest.CallWithLegacySdp
PeerConnectionInterfaceTest.ReceiveFireFoxOffer
PeerConnectionInterfaceTest.TestDataChannel
PeerConnectionInterfaceTest.TestSendBinaryOnRtpDataChannel
PeerConnectionInterfaceTest.TestSendOnlyDataChannel
# The following disables all tests under tsan due to crashes on shutdown.
SctpDataChannelTest.*
DtmfSenderTest.*
JsepSessionDescriptionTest.*
LocalAudioSourceTest.*
LocalVideoSourceTest.*
MediaStreamSignalingTest.*
JsepPeerConnectionP2PTestClient.*
PeerConnectionFactoryTestInternal.*
PeerConnectionFactoryTest.*
PeerConnectionInterfaceTest.*
FakeAdmTest.*
VideoTrack.*
WebRtcSdpTest.*
WebRtcSessionTest.*

View File

@ -1,102 +0,0 @@
# Tests that are failing when run under TSan.
CpuMonitorTest.TestCpuMonitor
PhysicalSocketTest.TestUdpReadyToSendIPv4
ThreadTest.Release
# The following lines disables all tests on tsan since it crashes on shutdown.
AsyncHttpRequestTest.*
FixedSizeLockFreeQueueTest.*
AutoDetectProxyTest.*
BandwidthSmootherTest.*
Base64.*
BasicTypesTest.*
BindTest.*
BufferTest.*
ByteBufferTest.*
ByteOrderTest.*
CpuMonitorTest.*
Crc32Test.*
EventTest.*
FileLockTest.*
FilesystemTest.*
RandomTest.*
HttpBaseTest.*
Url.*
HttpResponseData.*
HttpServer.*
IPAddressTest.*
LogTest.*
Md5DigestTest.*
MessageDigestTest.*
MessageQueueTest.*
MessageQueueManager.*
MultipartTest.*
NatTest.*
NatTcpTest.*
NetworkTest.*
NullSocketServerTest.*
OptionsFile.*
Pathname.*
PhysicalSocketTest.*
PosixSignalDeliveryTest.*
ProfilerTest.*
ProxyTest.*
ProxyDetectTest.*
RateLimiterTest.*
RateTrackerTest.*
ReferenceCountedSingletonFactory.*
RollingAccumulatorTest.*
Sha1DigestTest.*
SharedExclusiveLockTest.*
SignalThreadTest.*
SigslotDefault.*
SigslotSTSlotTest.*
SigslotMTSlotTest.*
SigslotMTLockTest.*
DestructionOrder.*
SocketAddressTest.*
StreamSegment.*
FifoBufferTest.*
AsyncWriteTest.*
Utf8EncodeTest.*
HexEncodeTest.*
TokenizeTest.*
SplitTest.*
BoolTest.*
string_matchTest.*
string_trim_Test.*
string_startsTest.*
string_endsTest.*
start_task_test.*
unstarted_task_test.*
TestClientTest.*
ThreadTest.*
TimeTest.*
Urlencode.*
Urldecode.*
VersionParsing.*
VirtualSocketServerTest.*
QNameTest.*
XmlBuilderTest.*
XmlElementTest.*
XmlnsStackTest.*
XmlParserTest.*
XmlPrinterTest.*
HangoutPubSubClientTest.*
JidTest.*
MucRoomConfigTaskTest.*
MucRoomDiscoveryTaskTest.*
MucRoomLookupTaskTest.*
MucRoomUniqueHangoutIdTaskTest.*
PingTaskTest.*
PubSubClientTest.*
PubSubTasksTest.*
XmppEngineTest.*
XmppLoginTaskTest.*
XmppStanzaParserTest.*
LateBindingSymbolTable.*
LinuxFdWalk.*
SSLIdentityTest.*
SSLStreamAdapterTestTLS.*
SSLStreamAdapterTestDTLS.*
SSLStreamAdapterTestDTLSFromPEMStrings.*

View File

@ -1,12 +0,0 @@
# Tests that are too slow.
AudioCodingModuleTest.TestAllCodecs*
AudioCodingModuleTest.TestEncodeDecode*
AudioCodingModuleTest.TestFEC*
AudioCodingModuleTest.TestIsac*
AudioCodingModuleTest.TwoWayCommunication*
AudioCodingModuleTest.TestStereo*
AudioCodingModuleTest.TestVADDTX*
AudioCodingModuleTest.TestOpus*
FecTest.FecTest
TestVp8Impl.BaseUnitTest
VideoProcessorIntegrationTest.ProcessNoLossChangeBitRate

View File

@ -1,5 +0,0 @@
# Tests that are too slow.
VideoProcessorIntegrationTest.ProcessZeroPacketLoss
# https://code.google.com/p/webrtc/issues/detail?id=2328
DualStreamTest.BitExactSync*

View File

@ -1,2 +0,0 @@
# Tests that are too slow.
CommonFormats/AudioProcessingTest*

View File

@ -1,17 +0,0 @@
# Too slow to run with TSan on Windows.
ApmTest.EchoCancellationReportsCorrectDelays
ApmTest.IdenticalInputChannelsResultInIdenticalOutputChannels
CommonFormats/AudioProcessingTest*
RingBufferTest.RandomStressTest
RingBufferTest.RandomStressTestWithNullPtr
VideoProcessingModuleTest.ContentAnalysis
VideoProcessingModuleTest.Deflickering
VideoProcessingModuleTest.Denoising
TestVideoSenderWithVp8.*
# https://code.google.com/p/webrtc/issues/detail?id=1938
MouseCursorShapeTest.MatchCursors
# https://code.google.com/p/webrtc/issues/detail?id=2329
NetEqDecodingTest.TestBitExactness
NetEqDecodingTest.TestNetworkStatistics

View File

@ -1,3 +0,0 @@
# https://code.google.com/p/webrtc/issues/detail?id=2329
NetEqDecodingTest.TestBitExactness
NetEqDecodingTest.TestNetworkStatistics

View File

@ -1,2 +0,0 @@
# https://code.google.com/p/webrtc/issues/detail?id=2330
ClockTest.NtpTime

View File

@ -1 +0,0 @@
*

View File

@ -1,42 +0,0 @@
#!/usr/bin/env python
# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
import os
import re
import sys
"""
Copied from Chrome's src/tools/valgrind/tsan/PRESUBMIT.py
See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
for more details on the presubmit API built into gcl.
"""
def CheckChange(input_api, output_api):
"""Checks the TSan suppressions files for bad suppressions."""
# Add the path to the Chrome valgrind dir to the import path:
tools_vg_path = os.path.join(input_api.PresubmitLocalPath(), '..', '..',
'valgrind')
sys.path.append(tools_vg_path)
import suppressions
return suppressions.PresubmitCheck(input_api, output_api)
def CheckChangeOnUpload(input_api, output_api):
return CheckChange(input_api, output_api)
def CheckChangeOnCommit(input_api, output_api):
return CheckChange(input_api, output_api)
def GetPreferredTrySlaves():
return ['linux_tsan']

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +0,0 @@
# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
# This file is used in addition to the one already maintained in Chrome.
# It acts as a place holder for future additions for WebRTC.
# It must exist for the Python wrapper script to work properly.

View File

@ -1,48 +0,0 @@
# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
# This file is used in addition to the one already maintained in Chrome.
# It acts as a place holder for future additions for WebRTC.
# It must exist for the Python wrapper script to work properly.
{
bug_2319_1
ThreadSanitizer:Race
...
fun:webrtc::ThreadWindows::Run
fun:webrtc::ThreadWindows::StartThread
...
fun:BaseThreadInitThunk
}
{
bug_2319_2
ThreadSanitizer:Race
fun:TlsGetValue
fun:__set_flsgetvalue
fun:_threadstartex
fun:BaseThreadInitThunk
}
{
bug_2319_3
ThreadSanitizer:Race
fun:webrtc::ThreadWindows::SetNotAlive
...
}
{
bug_2319_4
ThreadSanitizer:Race
fun:webrtc::ThreadWindows::Start
...
}
{
bug_2319_5
ThreadSanitizer:Race
fun:webrtc::ThreadWindows::Stop
...
}

View File

@ -25,7 +25,8 @@ set TOOL_NAME="unknown"
goto :PARSE_ARGS_LOOP
:TOOLNAME_NOT_FOUND
echo "Please specify a tool (tsan or drmemory) by using --tool flag"
echo "Please specify a tool (drmemory, drmemory_light or drmemory_full)"
echo "by using --tool flag"
exit /B 1
:TOOLNAME_FOUND
@ -36,8 +37,7 @@ if "%TOOL_NAME%" == "drmemory" GOTO :SETUP_DRMEMORY
if "%TOOL_NAME%" == "drmemory_light" GOTO :SETUP_DRMEMORY
if "%TOOL_NAME%" == "drmemory_full" GOTO :SETUP_DRMEMORY
if "%TOOL_NAME%" == "drmemory_pattern" GOTO :SETUP_DRMEMORY
if "%TOOL_NAME%" == "tsan" GOTO :SETUP_TSAN
echo "Unknown tool: `%TOOL_NAME%`! Only tsan and drmemory are supported."
echo "Unknown tool: `%TOOL_NAME%`! Only drmemory* tools are supported."
exit /B 1
:SETUP_DRMEMORY
@ -57,22 +57,6 @@ set DRMEMORY_COMMAND=%DRMEMORY_PATH%\unpacked\bin\drmemory.exe
:: }}}
goto :RUN_TESTS
:SETUP_TSAN
:: Set up PIN_COMMAND to invoke TSan {{{1
set TSAN_PATH=%THISDIR%..\..\third_party\tsan
set TSAN_SFX=%TSAN_PATH%\tsan-x86-windows-sfx.exe
if EXIST %TSAN_SFX% GOTO TSAN_BINARY_OK
echo "Can't find ThreadSanitizer executables."
echo "See http://www.chromium.org/developers/how-tos/using-valgrind/threadsanitizer/threadsanitizer-on-windows"
echo "for the instructions on how to get them."
exit /B 1
:TSAN_BINARY_OK
%TSAN_SFX% -o%TSAN_PATH%\unpacked -y
set PIN_COMMAND=%TSAN_PATH%\unpacked\tsan-x86-windows\tsan.bat
:: }}}
goto :RUN_TESTS
:RUN_TESTS
set PYTHONPATH=%THISDIR%..\python\google;%THISDIR%..\valgrind
set RUNNING_ON_VALGRIND=yes

View File

@ -18,9 +18,6 @@ The Chrome valgrind directory we use as a DEPS dependency contains the following
suppression files:
valgrind/memcheck/suppressions.txt
valgrind/memcheck/suppressions_mac.txt
valgrind/tsan/suppressions.txt
valgrind/tsan/suppressions_mac.txt
valgrind/tsan/suppressions_win32.txt
Since they're referenced from the chrome_tests.py script, we have similar files
below the directory of this script. When executing, this script will setup both
Chrome's suppression files and our own, so we can easily maintain WebRTC
@ -65,7 +62,7 @@ class WebRTCTest(chrome_tests.ChromeTests):
cmd)
# When ChromeTests._DefaultCommand has executed, it has setup suppression
# files based on what's found in the memcheck/ or tsan/ subdirectories of
# files based on what's found in the memcheck/ subdirectory of
# this script's location. If Mac or Windows is executing, additional
# platform specific files have also been added.
# Since only the ones located below this directory are added, we must also

View File

@ -21,11 +21,10 @@
export THISDIR=`dirname $0`
ARGV_COPY="$@"
# We need to set CHROME_VALGRIND iff using Memcheck or TSan-Valgrind:
# We need to set CHROME_VALGRIND iff using Memcheck:
# tools/valgrind-webrtc/webrtc_tests.sh --tool memcheck
# or
# tools/valgrind-webrtc/webrtc_tests.sh --tool=memcheck
# (same for "--tool=tsan")
tool="memcheck" # Default to memcheck.
while (( "$#" ))
do
@ -47,14 +46,6 @@ case "$tool" in
"memcheck")
NEEDS_VALGRIND=1
;;
"tsan" | "tsan_rv")
if [ "`uname -s`" == CYGWIN* ]
then
NEEDS_PIN=1
else
NEEDS_VALGRIND=1
fi
;;
"drmemory" | "drmemory_light" | "drmemory_full" | "drmemory_pattern")
NEEDS_DRMEMORY=1
;;
@ -111,28 +102,6 @@ then
fi
fi
if [ "$NEEDS_PIN" == "1" ]
then
if [ -z "$PIN_COMMAND" ]
then
# Set up PIN_COMMAND to invoke TSan.
TSAN_PATH="$THISDIR/../../third_party/tsan"
TSAN_SFX="$TSAN_PATH/tsan-x86-windows-sfx.exe"
echo "$TSAN_SFX"
if [ ! -f $TSAN_SFX ]
then
echo "Can't find ThreadSanitizer executables."
echo "See http://www.chromium.org/developers/how-tos/using-valgrind/threadsanitizer/threadsanitizer-on-windows"
echo "for the instructions on how to get them."
exit 1
fi
chmod +x "$TSAN_SFX" # Cygwin won't run it without +x.
"$TSAN_SFX" -o"$TSAN_PATH"/unpacked -y
export PIN_COMMAND="$TSAN_PATH/unpacked/tsan-x86-windows/tsan.bat"
fi
fi
# Add Chrome's Valgrind scripts dir to the PYTHON_PATH since it contains
# the scripts that are needed for this script to run
PYTHONPATH=$THISDIR/../python/google:$CHROME_VALGRIND_SCRIPTS python \