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 goto :PARSE_ARGS_LOOP
:TOOLNAME_NOT_FOUND :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 exit /B 1
:TOOLNAME_FOUND :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_light" GOTO :SETUP_DRMEMORY
if "%TOOL_NAME%" == "drmemory_full" GOTO :SETUP_DRMEMORY if "%TOOL_NAME%" == "drmemory_full" GOTO :SETUP_DRMEMORY
if "%TOOL_NAME%" == "drmemory_pattern" GOTO :SETUP_DRMEMORY if "%TOOL_NAME%" == "drmemory_pattern" GOTO :SETUP_DRMEMORY
if "%TOOL_NAME%" == "tsan" GOTO :SETUP_TSAN echo "Unknown tool: `%TOOL_NAME%`! Only drmemory* tools are supported."
echo "Unknown tool: `%TOOL_NAME%`! Only tsan and drmemory are supported."
exit /B 1 exit /B 1
:SETUP_DRMEMORY :SETUP_DRMEMORY
@ -57,22 +57,6 @@ set DRMEMORY_COMMAND=%DRMEMORY_PATH%\unpacked\bin\drmemory.exe
:: }}} :: }}}
goto :RUN_TESTS 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 :RUN_TESTS
set PYTHONPATH=%THISDIR%..\python\google;%THISDIR%..\valgrind set PYTHONPATH=%THISDIR%..\python\google;%THISDIR%..\valgrind
set RUNNING_ON_VALGRIND=yes 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: suppression files:
valgrind/memcheck/suppressions.txt valgrind/memcheck/suppressions.txt
valgrind/memcheck/suppressions_mac.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 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 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 Chrome's suppression files and our own, so we can easily maintain WebRTC
@ -65,7 +62,7 @@ class WebRTCTest(chrome_tests.ChromeTests):
cmd) cmd)
# When ChromeTests._DefaultCommand has executed, it has setup suppression # 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 # this script's location. If Mac or Windows is executing, additional
# platform specific files have also been added. # platform specific files have also been added.
# Since only the ones located below this directory are added, we must also # Since only the ones located below this directory are added, we must also

View File

@ -21,11 +21,10 @@
export THISDIR=`dirname $0` export THISDIR=`dirname $0`
ARGV_COPY="$@" 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 # tools/valgrind-webrtc/webrtc_tests.sh --tool memcheck
# or # or
# tools/valgrind-webrtc/webrtc_tests.sh --tool=memcheck # tools/valgrind-webrtc/webrtc_tests.sh --tool=memcheck
# (same for "--tool=tsan")
tool="memcheck" # Default to memcheck. tool="memcheck" # Default to memcheck.
while (( "$#" )) while (( "$#" ))
do do
@ -47,14 +46,6 @@ case "$tool" in
"memcheck") "memcheck")
NEEDS_VALGRIND=1 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") "drmemory" | "drmemory_light" | "drmemory_full" | "drmemory_pattern")
NEEDS_DRMEMORY=1 NEEDS_DRMEMORY=1
;; ;;
@ -111,28 +102,6 @@ then
fi fi
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 # Add Chrome's Valgrind scripts dir to the PYTHON_PATH since it contains
# the scripts that are needed for this script to run # the scripts that are needed for this script to run
PYTHONPATH=$THISDIR/../python/google:$CHROME_VALGRIND_SCRIPTS python \ PYTHONPATH=$THISDIR/../python/google:$CHROME_VALGRIND_SCRIPTS python \