diff options
Diffstat (limited to 'docs/ThreadSanitizer.rst')
-rw-r--r-- | docs/ThreadSanitizer.rst | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/docs/ThreadSanitizer.rst b/docs/ThreadSanitizer.rst index 5e5ee48..194ad4a 100644 --- a/docs/ThreadSanitizer.rst +++ b/docs/ThreadSanitizer.rst @@ -91,11 +91,21 @@ Some code should not be instrumented by ThreadSanitizer. One may use the function attribute :ref:`no_sanitize_thread <langext-thread_sanitizer>` to disable instrumentation of plain (non-atomic) loads/stores in a particular function. -ThreadSanitizer may still instrument such functions to avoid false positives. +ThreadSanitizer still instruments such functions to avoid false positives and +provide meaningful stack traces. This attribute may not be supported by other compilers, so we suggest to use it together with -``__has_feature(thread_sanitizer)``. Note: currently, this attribute will be -lost if the function is inlined. +``__has_feature(thread_sanitizer)``. + +Blacklist +--------- + +ThreadSanitizer supports ``src`` and ``fun`` entity types in +:doc:`SanitizerSpecialCaseList`, that can be used to suppress data race reports in +the specified source files or functions. Unlike functions marked with +:ref:`no_sanitize_thread <langext-thread_sanitizer>` attribute, +blacklisted functions are not instrumented at all. This can lead to false positives +due to missed synchronization via atomic operations and missed stack frames in reports. Limitations ----------- |