Update TSAN suppressions.
authormtklein <mtklein@chromium.org>
Mon, 2 Jun 2014 20:23:49 +0000 (13:23 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 2 Jun 2014 20:23:49 +0000 (13:23 -0700)
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

src/ports/SkBarriers_x86.h
tools/tsan.supp

index fc57615e04852669c0c625dcd00ecfcdbd51be46..4fbc444049fea7cbbd6645f101279155b0333e8d 100644 (file)
@@ -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 @@ static inline void sk_compiler_barrier() { asm volatile("" : : : "memory"); }
 
 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;
index d87f48609f93b161f97319502809eb7262b4e245..aab8211cec50683c26d2648709436445e9f80e13 100644 (file)
@@ -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