• 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
..
addr2line Loading commit data...
api Loading commit data...
asm Loading commit data...
cgo Loading commit data...
compile Loading commit data...
cover Loading commit data...
dist Loading commit data...
doc Loading commit data...
fix Loading commit data...
go Loading commit data...
gofmt Loading commit data...
internal Loading commit data...
link Loading commit data...
nm Loading commit data...
objdump Loading commit data...
pack Loading commit data...
pprof Loading commit data...
trace Loading commit data...
vendor Loading commit data...
vet Loading commit data...
yacc Loading commit data...