From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50855) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bn11R-00081Q-Np for qemu-devel@nongnu.org; Thu, 22 Sep 2016 06:14:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bn11M-0006mw-MX for qemu-devel@nongnu.org; Thu, 22 Sep 2016 06:14:28 -0400 Received: from mail-wm0-f54.google.com ([74.125.82.54]:37010) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bn11M-0006ms-Ff for qemu-devel@nongnu.org; Thu, 22 Sep 2016 06:14:24 -0400 Received: by mail-wm0-f54.google.com with SMTP id b130so139475129wmc.0 for ; Thu, 22 Sep 2016 03:14:24 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 22 Sep 2016 11:13:07 +0100 Message-Id: <20160922101316.13064-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH v2 0/9] A couple of fixes for ThreadSanitizer List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, pbonzini@redhat.com, cota@braap.org, stefanha@redhat.com, kwolf@redhat.com Cc: mttcg@listserver.greensocs.com, fred.konrad@greensocs.com, a.rigo@virtualopensystems.com, bobby.prani@gmail.com, nikunj@linux.vnet.ibm.com, mark.burton@greensocs.com, jan.kiszka@siemens.com, serge.fdrv@gmail.com, rth@twiddle.net, peter.maydell@linaro.org, claudio.fontana@huawei.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Hi, This is v2 of the ThreadSanitizer fixes. Changes from the last version: - added Marc-André's review tags - added qga/command: use QEMU atomic primitives - simplified ui/vnc-enc-tight: remove switch and have single return - fixed the Travis CI build (that was painful....) There is still some work to do to go through and fix warnings from the sanitizer. Notably "make check" doesn't complete and generates a load of warnings and I haven't investigated the warnings generated by co-routines. With this series applied you can enable ThreadSanitizer with the following command line: ./configure --extra-cflags="-g3 -O0 \ -fsantize=thread \ -fsanitize-blacklist=/home/alex/lsrc/qemu/qemu.git/blacklist.tsan" \ --with-coroutine=gthread --disable-pie --enable-debug --enable-debug-info breakdown: -fsanitize=thread - enables sanitizer -fsanitize-blacklist - skip things the compiler finds hard, like SSE --with-coroutine=gthread - tsan chokes on other forms of coroutine --disable-pie - tsan no longer works with PIE --enable-debug --enable-debug-info - better backtraces Alex Bennée (8): ui/vnc-enc-tight: remove switch and have single return tcg/optimize: move default return out of if statement new: blacklist.tsan qom/object: update class cache atomically cpu: atomically modify cpu->exit_request util/qht: atomically set b->hashes qga/command: use QEMU atomic primitives .travis.yml: add gcc sanitizer build Paolo Bonzini (1): seqlock: use atomic writes for the sequence .travis.yml | 45 +++++++++++++++++++++++++++++++++++++++++++++ blacklist.tsan | 2 ++ cpu-exec.c | 8 ++++---- include/qemu/seqlock.h | 4 ++-- qga/commands.c | 17 +++++++++-------- qom/cpu.c | 4 ++-- qom/object.c | 15 ++++++++------- tcg/optimize.c | 3 +-- ui/vnc-enc-tight.c | 6 ++---- util/qht.c | 10 +++++----- 10 files changed, 80 insertions(+), 34 deletions(-) create mode 100644 blacklist.tsan -- 2.9.3