• Ian Lance Taylor's avatar
    runtime/cgo: add TSAN acquire/release calls · 66736880
    Ian Lance Taylor authored
    Add TSAN acquire/release calls to runtime/cgo to match the ones
    generated by cgo.  This avoids a false positive race around the malloc
    memory used in runtime/cgo when other goroutines are simultaneously
    calling malloc and free from cgo.
    
    These new calls will only be used when building with CGO_CFLAGS and
    CGO_LDFLAGS set to -fsanitize=thread, which becomes a requirement to
    avoid all false positives when using TSAN.  These are needed not just
    for runtime/cgo, but also for any runtime package that uses cgo (such as
    net and os/user).
    
    Add an unused attribute to the _cgo_tsan_acquire and _cgo_tsan_release
    functions, in case there are no actual cgo function calls.
    
    Add a test that checks that setting CGO_CFLAGS/CGO_LDFLAGS avoids a
    false positive report when using os/user.
    
    Change-Id: I0905c644ff7f003b6718aac782393fa219514c48
    Reviewed-on: https://go-review.googlesource.com/23492
    Run-TryBot: Ian Lance Taylor <iant@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarDmitry Vyukov <dvyukov@google.com>
    66736880
Name
Last commit
Last update
..
errors Loading commit data...
fortran Loading commit data...
gmp Loading commit data...
life Loading commit data...
nocgo Loading commit data...
stdio Loading commit data...
test Loading commit data...
testasan Loading commit data...
testcarchive Loading commit data...
testcshared Loading commit data...
testgodefs Loading commit data...
testsanitizers Loading commit data...
testshared Loading commit data...
testsigfwd Loading commit data...
testso Loading commit data...
testsovar Loading commit data...
testtls Loading commit data...