[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 00/13] Add Thread Sanitizer support to QEMU
From: |
Robert Foley |
Subject: |
[PATCH v3 00/13] Add Thread Sanitizer support to QEMU |
Date: |
Tue, 9 Jun 2020 16:07:25 -0400 |
Changes in v3:
- Fixed issue in tsan changes to start_switch_fiber(),
found by --enable-sanitizers testing.
- Removed the UC_TRACE() code.
- Removed the tb_destroy callback.
v2: https://lists.gnu.org/archive/html/qemu-devel/2020-06/msg01534.html
This patch series continues the work done by Emilio Cota and others to add
Thread Sanitizer (TSan) support to QEMU.
The starting point for this work was Emilio's branch here:
https://github.com/cota/qemu/commits/tsan
specifically this commit: 0be125fc0afd47218b34d2019abdd19b644f3199
The main purpose of this patch is to enable TSan support so that
QEMU developers can start using the tool.
We found this tool useful and even ran it on our recent changes in
the cpu-locks series, which fixes many warnings.
Clearly there is work to do here to clean up all the warnings. :)
We have also made an effort to introduce enough of the TSan suppression
mechanisms, so that others can continue this work.
This series adds support for:
- configure option for --enable-tsan.
- testing.rst has the full details on how to use TSan with or without docker,
including all the suppression mechanisms.
- We added an Ubuntu 20.04 docker that supports TSan builds.
- test-tsan is a new docker test that builds and runs make check under TSan.
- We added an example blacklist file for files or functions TSan should ignore
at compile time. This can now be specified manually.
- Added a suppression file for TSan to suppress certain warnings at run time.
- Added tsan.h with annotations which also can be used to suppress warnings.
Emilio G. Cota (7):
cpu: convert queued work to a QSIMPLEQ
thread: add qemu_spin_destroy
cputlb: destroy CPUTLB with tlb_destroy
qht: call qemu_spin_destroy for head buckets
tcg: call qemu_spin_destroy for tb->jmp_lock
translate-all: call qemu_spin_destroy for PageDesc
thread: add tsan annotations to QemuSpin
Lingfeng Yang (1):
configure: add --enable-tsan flag + fiber annotations for
coroutine-ucontext
Robert Foley (5):
tests/docker: Added docker build support for TSan.
include/qemu: Added tsan.h for annotations.
util: Added tsan annotate for thread name.
docs: Added details on TSan to testing.rst
tests: Disable select tests under TSan, which hit TSan issue.
accel/tcg/cputlb.c | 15 +++
accel/tcg/translate-all.c | 17 ++++
configure | 47 ++++++++-
cpus-common.c | 25 ++---
cpus.c | 14 ++-
docs/devel/testing.rst | 107 +++++++++++++++++++++
exec.c | 1 +
hw/core/cpu.c | 1 +
include/exec/exec-all.h | 8 ++
include/hw/core/cpu.h | 6 +-
include/qemu/thread.h | 38 +++++++-
include/qemu/tsan.h | 71 ++++++++++++++
include/tcg/tcg.h | 1 +
tcg/tcg.c | 9 ++
tests/Makefile.include | 9 +-
tests/docker/dockerfiles/ubuntu2004.docker | 65 +++++++++++++
tests/docker/test-tsan | 44 +++++++++
tests/qtest/Makefile.include | 7 +-
tests/tsan/blacklist.tsan | 10 ++
tests/tsan/suppressions.tsan | 14 +++
util/coroutine-ucontext.c | 66 +++++++++++--
util/qemu-thread-posix.c | 2 +
util/qht.c | 1 +
23 files changed, 541 insertions(+), 37 deletions(-)
create mode 100644 include/qemu/tsan.h
create mode 100644 tests/docker/dockerfiles/ubuntu2004.docker
create mode 100755 tests/docker/test-tsan
create mode 100644 tests/tsan/blacklist.tsan
create mode 100644 tests/tsan/suppressions.tsan
--
2.17.1
- [PATCH v3 00/13] Add Thread Sanitizer support to QEMU,
Robert Foley <=
- [PATCH v3 01/13] configure: add --enable-tsan flag + fiber annotations for coroutine-ucontext, Robert Foley, 2020/06/09
- [PATCH v3 02/13] cpu: convert queued work to a QSIMPLEQ, Robert Foley, 2020/06/09
- [PATCH v3 03/13] thread: add qemu_spin_destroy, Robert Foley, 2020/06/09
- [PATCH v3 04/13] cputlb: destroy CPUTLB with tlb_destroy, Robert Foley, 2020/06/09
- [PATCH v3 05/13] qht: call qemu_spin_destroy for head buckets, Robert Foley, 2020/06/09
- [PATCH v3 06/13] tcg: call qemu_spin_destroy for tb->jmp_lock, Robert Foley, 2020/06/09
- [PATCH v3 07/13] translate-all: call qemu_spin_destroy for PageDesc, Robert Foley, 2020/06/09
- [PATCH v3 08/13] thread: add tsan annotations to QemuSpin, Robert Foley, 2020/06/09
- [PATCH v3 09/13] tests/docker: Added docker build support for TSan., Robert Foley, 2020/06/09
- [PATCH v3 10/13] include/qemu: Added tsan.h for annotations., Robert Foley, 2020/06/09