[zorg] r268399 - tsan: fix buildbot test script

Dmitry Vyukov via llvm-commits llvm-commits at lists.llvm.org
Tue May 3 09:51:50 PDT 2016


Author: dvyukov
Date: Tue May  3 11:51:50 2016
New Revision: 268399

URL: http://llvm.org/viewvc/llvm-project?rev=268399&view=rev
Log:
tsan: fix buildbot test script

The script claimed to use fresh clang to build tsan runtime, but it actually used gcc all the time.
Build runtime with both gcc and clang for real.

Use clang-built runtime with check_analyze. We used to depend on host gcc. But some distributions got
new gcc recently which broke the check. Generally, we can't depend that an arbitrary host gcc generates
something stable. This has an additional advantage of catching regressions in clang codegen.

check_analyze is updated for what clang currently generates in r268382.

Drop tsan_test.sh and racecheck_unittest. racecheck_unittest is pain to maintain and the repository
is going away soon. We better add more lit regression tests if that turns out to be necessary.

Reviewed in http://reviews.llvm.org/D19868


Removed:
    zorg/trunk/zorg/buildbot/builders/sanitizers/test_tsan.sh
Modified:
    zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_standard.sh

Modified: zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_standard.sh
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_standard.sh?rev=268399&r1=268398&r2=268399&view=diff
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_standard.sh (original)
+++ zorg/trunk/zorg/buildbot/builders/sanitizers/buildbot_standard.sh Tue May  3 11:51:50 2016
@@ -38,7 +38,7 @@ function build_tsan {
   if [ ! -d $build_dir ]; then
     mkdir $build_dir
   fi
-  (cd $build_dir && CC=gcc CXX=g++ cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+  (cd $build_dir && CC="$3" CXX="$4" cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
     ${CMAKE_COMMON_OPTIONS} ${extra_cmake_args} \
     ${LLVM_CHECKOUT})
   (cd $build_dir && make -j$MAKE_JOBS ${targets}) || echo @@@STEP_FAILURE@@@
@@ -50,32 +50,18 @@ echo @@@BUILD_STEP update@@@
 buildbot_update
 
 echo @@@BUILD_STEP build fresh clang + debug compiler-rt@@@
-build_tsan "${TSAN_DEBUG_BUILD_DIR}" "-DCOMPILER_RT_DEBUG=ON"
+build_tsan "${TSAN_DEBUG_BUILD_DIR}" "-DCOMPILER_RT_DEBUG=ON" gcc g++
 
 echo @@@BUILD_STEP test tsan in debug compiler-rt build@@@
 (cd $TSAN_DEBUG_BUILD_DIR && make -j$MAKE_JOBS check-tsan) || echo @@@STEP_FAILURE@@@
 
 echo @@@BUILD_STEP build tsan with stats and debug output@@@
-build_tsan "${TSAN_FULL_DEBUG_BUILD_DIR}" "-DCOMPILER_RT_DEBUG=ON -DCOMPILER_RT_TSAN_DEBUG_OUTPUT=ON -DLLVM_INCLUDE_TESTS=OFF"
+build_tsan "${TSAN_FULL_DEBUG_BUILD_DIR}" "-DCOMPILER_RT_DEBUG=ON -DCOMPILER_RT_TSAN_DEBUG_OUTPUT=ON -DLLVM_INCLUDE_TESTS=OFF" gcc g++
 
 echo @@@BUILD_STEP build release tsan with clang@@@
-build_tsan "${TSAN_RELEASE_BUILD_DIR}" "-DCOMPILER_RT_DEBUG=OFF"
+build_tsan "${TSAN_RELEASE_BUILD_DIR}" "-DCOMPILER_RT_DEBUG=OFF" "$ROOT/$TSAN_DEBUG_BUILD_DIR/bin/clang" "$ROOT/$TSAN_DEBUG_BUILD_DIR/bin/clang++"
 
-echo @@@BUILD_STEP prepare for testing tsan@@@
-TSAN_PATH=$ROOT/llvm/projects/compiler-rt/lib/tsan/
-
-CLANG_PATH=$ROOT/$TSAN_RELEASE_BUILD_DIR/bin
-export PATH=$CLANG_PATH:$PATH
-export MAKEFLAGS=-j$MAKE_JOBS
-clang -v 2>tmp && grep "version" tmp
-
-#cd $ROOT
-#if [ -d tsanv2 ]; then
-#  (cd tsanv2 && svn cleanup && svn up --ignore-externals)
-#else
-#  svn co http://data-race-test.googlecode.com/svn/trunk/ tsanv2
-#fi
-#export RACECHECK_UNITTEST_PATH=$ROOT/tsanv2/unittest
-#
-#cp $ROOT/../sanitizer_buildbot/sanitizers/test_tsan.sh $TSAN_PATH
-#(cd $TSAN_PATH && ./test_tsan.sh)
+echo @@@BUILD_STEP tsan analyze@@@
+BIN=$(mktemp -t tsan_exe.XXXXXXXX)
+echo "int main() {return 0;}" | $TSAN_RELEASE_BUILD_DIR/bin/clang -x c++ - -fsanitize=thread -O2 -o ${BIN}
+$LLVM_CHECKOUT/projects/compiler-rt/lib/tsan/check_analyze.sh ${BIN} || echo @@@STEP_FAILURE@@@

Removed: zorg/trunk/zorg/buildbot/builders/sanitizers/test_tsan.sh
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/sanitizers/test_tsan.sh?rev=268398&view=auto
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/sanitizers/test_tsan.sh (original)
+++ zorg/trunk/zorg/buildbot/builders/sanitizers/test_tsan.sh (removed)
@@ -1,33 +0,0 @@
-#!/usr/bin/env bash
-
-set -x
-set -e
-set -u
-
-echo @@@BUILD_STEP tsan analyze@@@
-BIN=$(mktemp -t tsan_exe.XXXXXXXX)
-echo "int main() {return 0;}" | clang -x c++ - -fsanitize=thread -O2 -o ${BIN}
-./check_analyze.sh ${BIN} || echo @@@STEP_FAILURE@@@
-
-echo @@@BUILD_STEP tsan racecheck_unittest@@@
-SUPPRESS_WARNINGS="-Wno-format-security -Wno-null-dereference -Wno-unused-private-field"
-EXTRA_COMPILER_FLAGS="-fsanitize=thread -DTHREAD_SANITIZER -fPIC -g -O2 $SUPPRESS_WARNINGS"
-(cd $RACECHECK_UNITTEST_PATH && \
-make clean && \
-OMIT_DYNAMIC_ANNOTATIONS_IMPL=1 make l64 -j16 CC=clang CXX=clang++ LD=clang++ LDOPT="-fsanitize=thread" OMIT_CPP0X=1 EXTRA_CFLAGS="$EXTRA_COMPILER_FLAGS" EXTRA_CXXFLAGS="$EXTRA_COMPILER_FLAGS" && \
-bin/racecheck_unittest-linux-amd64-O0 --gtest_filter=-*Ignore*:*Suppress*:*EnableRaceDetectionTest*:*Rep*Test*:*NotPhb*:*Barrier*:*Death*:*PositiveTests_RaceInSignal*:StressTests.FlushStateTest:*Mmap84GTest:*.LibcStringFunctions:LockTests.UnlockingALockHeldByAnotherThread:LockTests.UnlockTwice:PrintfTests.RaceOnPutsArgument)
-
-#Ignore: ignores do not work yet
-#Suppress: suppressions do not work yet
-#EnableRaceDetectionTest: the annotation is not supported
-#Rep*Test: uses inline assembly
-#NotPhb: not-phb is not supported
-#Barrier: pthread_barrier_t is not fully supported yet
-#Death: there is some flakyness
-#PositiveTests_RaceInSignal: signal() is not intercepted yet
-#StressTests.FlushStateTest: uses suppressions
-#Mmap84GTest: too slow, causes paging
-#LockTests.UnlockingALockHeldByAnotherThread: causes tsan report and non-zero exit code
-#LockTests.UnlockTwice: causes tsan report and non-zero exit code
-#PrintfTests.RaceOnPutsArgument: seems to be an issue with tsan shadow eviction, lit tests contain a similar test and it passes
-




More information about the llvm-commits mailing list