Skip to content
  • Anna Zaks's avatar
    [tsan][clang] Introduce a function attribute to disable TSan checking at run time · f05b16b9
    Anna Zaks authored
    This introduces a function annotation that disables TSan checking for the
    function at run time. The benefit over attribute((no_sanitize("thread")))
    is that the accesses within the callees will also be suppressed.
    
    The motivation for this attribute is a guarantee given by the objective C
    language that the calls to the reference count decrement and object
    deallocation will be synchronized. To model this properly, we would need to
    intercept all ref count decrement calls (which are very common in ObjC due
    to use of ARC) and also every single message send. Instead, we propose to
    just ignore all accesses made from within dealloc at run time. The main
    downside is that this still does not introduce any synchronization, which
    means we might still report false positives if the code that relies on this
    synchronization is not executed from within dealloc. However, we have not
    seen this in practice so far and think these cases will be very rare.
    
    (This problem is similar in nature to https://reviews.llvm.org/D21609;
    unfortunately, the same solution does not apply here.)
    
    Differential Revision: https://reviews.llvm.org/D25857
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@286672 91177308-0d34-0410-b5e6-96231b3b80d8
    f05b16b9