[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v1 09/12] tests/docker: Added docker build support for TSan.
From: |
Alex Bennée |
Subject: |
Re: [PATCH v1 09/12] tests/docker: Added docker build support for TSan. |
Date: |
Tue, 02 Jun 2020 21:21:08 +0100 |
User-agent: |
mu4e 1.5.1; emacs 28.0.50 |
Robert Foley <robert.foley@linaro.org> writes:
> Added a new docker for ubuntu 20.04.
> This docker has support for Thread Sanitizer
> including one patch we need in one of the header files.
> https://github.com/llvm/llvm-project/commit/a72dc86cd
>
> This command will build with tsan enabled:
> make docker-test-build-ubuntu2004 V=1 TSAN=1
>
> Also added the TSAN suppresion file to disable certain
> cases of TSAN warnings.
>
> Cc: Fam Zheng <fam@euphon.net>
> Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
> Signed-off-by: Robert Foley <robert.foley@linaro.org>
> ---
> tests/docker/Makefile.include | 2 +
> tests/docker/common.rc | 19 +++++++
> tests/docker/dockerfiles/ubuntu2004.docker | 65 ++++++++++++++++++++++
> tests/tsan/blacklist.tsan | 10 ++++
> tests/tsan/suppressions.tsan | 14 +++++
> 5 files changed, 110 insertions(+)
> create mode 100644 tests/docker/dockerfiles/ubuntu2004.docker
> create mode 100644 tests/tsan/blacklist.tsan
> create mode 100644 tests/tsan/suppressions.tsan
>
> diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
> index 43a8678688..e029e54b42 100644
> --- a/tests/docker/Makefile.include
> +++ b/tests/docker/Makefile.include
> @@ -202,6 +202,7 @@ endif
> @echo ' (default is 1)'
> @echo ' DEBUG=1 Stop and drop to shell in the created
> container'
> @echo ' before running the command.'
> + @echo ' TSAN=1 Enable use of tsan during the
> build/test.'
I'd rather not pollute the build with another env flag, rather...
> @echo ' NETWORK=1 Enable virtual network interface with
> default backend.'
> @echo ' NETWORK=$$BACKEND Enable virtual network interface with
> $$BACKEND.'
> @echo ' NOUSER Define to disable adding current user
> to containers passwd.'
> @@ -239,6 +240,7 @@ docker-run: docker-qemu-src
> -e EXTRA_CONFIGURE_OPTS="$(EXTRA_CONFIGURE_OPTS)" \
> -e V=$V -e J=$J -e DEBUG=$(DEBUG) \
> -e SHOW_ENV=$(SHOW_ENV) \
> + $(if $(TSAN),,-e TSAN=$(TSAN)) \
> $(if $(NOUSER),, \
> -e CCACHE_DIR=/var/tmp/ccache \
> -v $(DOCKER_CCACHE_DIR):/var/tmp/ccache:z \
> diff --git a/tests/docker/common.rc b/tests/docker/common.rc
> index 02cd67a8c5..5df93c6326 100755
> --- a/tests/docker/common.rc
> +++ b/tests/docker/common.rc
> @@ -27,6 +27,25 @@ requires()
>
> configure_qemu()
> {
> + if test -z "$TSAN"; then
> + requires clang tsan
> + echo "Including TSan Support"
> + tsan_log_dir="/tmp/qemu-test/build/tsan"
> + mkdir -p $tsan_log_dir > /dev/null || true
> + EXTRA_CONFIGURE_OPTS="${EXTRA_CONFIGURE_OPTS} --enable-tsan \
> + --cc=clang-10 --cxx=clang++-10 \
> + --disable-werror --extra-cflags=-O0"
> + # detect deadlocks is false currently simply because
> + # TSan crashes immediately with deadlock detecter enabled.
> + # We have maxed out the history size to get the best chance of
> finding
> + # warnings during testing.
> + # Note, to get tsan to fail on warning, use exitcode=66 below.
> +
> tsan_opts="suppressions=/tmp/qemu-test/src/tests/tsan/suppressions.tsan\
> + detect_deadlocks=false history_size=7\
> + halt_on_error=0 exitcode=0 verbose=5\
> + log_path=$tsan_log_dir/tsan_warnings.txt"
> + export TSAN_OPTIONS="$tsan_opts"
> + fi
...I think it would be better to put this in it's own test (test-tsan?)
--
Alex Bennée
- Re: [PATCH v1 09/12] tests/docker: Added docker build support for TSan.,
Alex Bennée <=