• Ian Lance Taylor's avatar
    cmd/cgo: mark stub functions as no_sanitize_thread · 79ba1e44
    Ian Lance Taylor authored
    When the generated stub functions write back the results to the stack,
    they can in some cases be writing to the same memory on the g0 stack.
    There is no race here (assuming there is no race in the Go code), but
    the thread sanitizer does not know that.  Turn off the thread sanitizer
    for the stub functions to prevent false positive warnings.
    
    Current clang suggests the no_sanitize("thread") attribute, but that
    does not work with clang 3.6 or GCC.  clang 3.6, GCC, and current clang
    all support the no_sanitize_thread attribute, so use that
    unconditionally.
    
    The test case and first version of the patch are from Dmitriy Vyukov.
    
    Change-Id: I80ce92824c6c8cf88ea0fe44f21cf50cf62474c9
    Reviewed-on: https://go-review.googlesource.com/23252
    Run-TryBot: Ian Lance Taylor <iant@golang.org>
    Reviewed-by: 's avatarDmitry Vyukov <dvyukov@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    79ba1e44
tsan3.go 662 Bytes