Update TSAN suppressions.
TSAN suppressions need to be on their own line, even free of comments.
Also, temporarily add SK_ANNOTATE_UNPROTECTED_READ to sk_acquire_load.
Will remove this when we're done iterating on SkBarriers_tsan.h: TSAN
has an atomic load that makes the annotation moot.
BUG=skia:
R=bungeman@google.com, mtklein@google.com
Author: mtklein@chromium.org
Review URL: https://codereview.chromium.org/308073013
diff --git a/src/ports/SkBarriers_x86.h b/src/ports/SkBarriers_x86.h
index fc57615..4fbc444 100644
--- a/src/ports/SkBarriers_x86.h
+++ b/src/ports/SkBarriers_x86.h
@@ -8,6 +8,8 @@
#ifndef SkBarriers_x86_DEFINED
#define SkBarriers_x86_DEFINED
+#include "SkDynamicAnnotations.h"
+
#ifdef SK_BUILD_FOR_WIN
# include <intrin.h>
static inline void sk_compiler_barrier() { _ReadWriteBarrier(); }
@@ -17,7 +19,7 @@
template <typename T>
T sk_acquire_load(T* ptr) {
- T val = *ptr;
+ T val = SK_ANNOTATE_UNPROTECTED_READ(*ptr);
// On x86, all loads are acquire loads, so we only need a compiler barrier.
sk_compiler_barrier();
return val;
diff --git a/tools/tsan.supp b/tools/tsan.supp
index d87f486..aab8211 100644
--- a/tools/tsan.supp
+++ b/tools/tsan.supp
@@ -1,12 +1,20 @@
# Suppressions for Thread Sanitizer
+#
+# CAREFUL! Comments must go on their own line or your suppressions will silently fail.
# WebP races (harmlessly) choosing function pointers for SIMD versions of some of its functions.
race:third_party/externals/libwebp
# skia:2459 Seemingly misdiagnosed use-after-free, having something to do with software GL drivers.
-race:SkGLContextHelper::init # We don't always get swrast_dri.so in the stack or we'd use that.
+# We don't always get swrast_dri.so in the stack or we'd use that.
+race:SkGLContextHelper::init
-# For now assume anything using SkOnce and calls on SkRefCntBase (ref, unref, unique) are safe.
-# TODO(mtklein): teach TSAN about SkOnce, SkRefCnt and SkSpinlock correctly.
-race:SkOnce
-race:SkRefCntBase
+# Threadsafe, should be ported to SkLazyPtr.
+race:SkFontHost_FreeType
+
+# Not threadsafe, should be fixed.
+race:SkFontHost_fontconfig_ref_global
+race:SkString::RefRec
+
+# Not threadsafe, should be deleted.
+race:SkPDF