• Nikhil Benesch's avatar
    runtime: never call into race detector with retaken P · e496e612
    Nikhil Benesch authored
    cgocall could previously invoke the race detector on an M whose P had
    been retaken. The race detector would attempt to use the P-local state
    from this stale P, racing with the thread that was actually wired to
    that P. The result was memory corruption of ThreadSanitizer's internal
    data structures that presented as hard-to-understand assertion failures
    and segfaults.
    
    Reorder cgocall so that it always acquires a P before invoking the race
    detector, and add a test that stresses the interaction between cgo and
    the race detector to protect against future bugs of this kind.
    
    Fixes #27660.
    
    Change-Id: Ide93f96a23490314d6647547140e0a412a97f0d4
    Reviewed-on: https://go-review.googlesource.com/c/148717
    Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
    Reviewed-by: 's avatarDmitry Vyukov <dvyukov@google.com>
    e496e612
Name
Last commit
Last update
..
gcc68255 Loading commit data...
issue20266 Loading commit data...
issue23555a Loading commit data...
issue23555b Loading commit data...
issue24161arg Loading commit data...
issue24161e0 Loading commit data...
issue24161e1 Loading commit data...
issue24161e2 Loading commit data...
issue24161res Loading commit data...
issue26213 Loading commit data...
issue26430 Loading commit data...
issue26743 Loading commit data...
issue8756 Loading commit data...
issue8828 Loading commit data...
issue9026 Loading commit data...
issue9400 Loading commit data...
issue9510a Loading commit data...
issue9510b Loading commit data...
align.go Loading commit data...
api.go Loading commit data...
backdoor.go Loading commit data...
basic.go Loading commit data...
buildid_linux.go Loading commit data...
callback.go Loading commit data...
callback_c.c Loading commit data...
callback_c_gc.c Loading commit data...
callback_c_gccgo.c Loading commit data...
cflags.go Loading commit data...
cgo_linux_test.go Loading commit data...
cgo_stubs_android_test.go Loading commit data...
cgo_test.go Loading commit data...
cgo_thread_lock.go Loading commit data...
cgo_unix_test.go Loading commit data...
checkconst.go Loading commit data...
complex.go Loading commit data...
cthread.go Loading commit data...
cthread_unix.c Loading commit data...
cthread_windows.c Loading commit data...
duplicate_symbol.go Loading commit data...
env.go Loading commit data...
exports.go Loading commit data...
fpvar.go Loading commit data...
gcc68255.go Loading commit data...
helpers.go Loading commit data...
issue10303.go Loading commit data...
issue11925.go Loading commit data...
issue12030.go Loading commit data...
issue1222.go Loading commit data...
issue1328.go Loading commit data...
issue13402.go Loading commit data...
issue13930.go Loading commit data...
issue14838.go Loading commit data...
issue1560.go Loading commit data...
issue1635.go Loading commit data...
issue17065.go Loading commit data...
issue17537.go Loading commit data...
issue18126.go Loading commit data...
issue18146.go Loading commit data...
issue18720.go Loading commit data...
issue20129.go Loading commit data...
issue20266.go Loading commit data...
issue20369.go Loading commit data...
issue20910.c Loading commit data...
issue20910.go Loading commit data...
issue21668.go Loading commit data...
issue21708.go Loading commit data...
issue21809.go Loading commit data...
issue21897.go Loading commit data...
issue21897b.go Loading commit data...
issue22958.go Loading commit data...
issue23356.go Loading commit data...
issue23555.go Loading commit data...
issue23720.go Loading commit data...
issue24161_darwin_test.go Loading commit data...
issue24206.go Loading commit data...
issue24206_generic.go Loading commit data...
issue2462.go Loading commit data...
issue25143.go Loading commit data...
issue26066.go Loading commit data...
issue26430.go Loading commit data...
issue26517.go Loading commit data...
issue26743.go Loading commit data...
issue28545.go Loading commit data...
issue3250.go Loading commit data...
issue3250w.go Loading commit data...
issue3261.go Loading commit data...
issue3729.go Loading commit data...
issue3729w.go Loading commit data...
issue3741.go Loading commit data...
issue3775.go Loading commit data...
issue3945.go Loading commit data...
issue4029.c Loading commit data...
issue4029.go Loading commit data...
issue4029w.go Loading commit data...
issue4054a.go Loading commit data...
issue4054b.go Loading commit data...
issue4273.c Loading commit data...
issue4273b.c Loading commit data...
issue4339.c Loading commit data...
issue4339.go Loading commit data...
issue4339.h Loading commit data...
issue4417.go Loading commit data...
issue4857.go Loading commit data...
issue5227.go Loading commit data...
issue5242.go Loading commit data...
issue5337.go Loading commit data...
issue5337w.go Loading commit data...
issue5548.go Loading commit data...
issue5548_c.c Loading commit data...
issue5603.go Loading commit data...
issue5740.go Loading commit data...
issue5740a.c Loading commit data...
issue5740b.c Loading commit data...
issue5986.go Loading commit data...
issue6128.go Loading commit data...
issue6390.go Loading commit data...
issue6472.go Loading commit data...
issue6506.go Loading commit data...
issue6612.go Loading commit data...
issue6833.go Loading commit data...
issue6833_c.c Loading commit data...
issue6907.go Loading commit data...
issue6907export.go Loading commit data...
issue6907export_c.c Loading commit data...
issue6997_linux.c Loading commit data...
issue6997_linux.go Loading commit data...
issue7234_test.go Loading commit data...
issue7560.go Loading commit data...
issue7665.go Loading commit data...
issue7786.go Loading commit data...
issue7978.go Loading commit data...
issue8092.go Loading commit data...
issue8148.go Loading commit data...
issue8331.h Loading commit data...
issue8331a.go Loading commit data...
issue8331b.go Loading commit data...
issue8428.go Loading commit data...
issue8441.go Loading commit data...
issue8517.go Loading commit data...
issue8517_windows.c Loading commit data...
issue8517_windows.go Loading commit data...
issue8694.go Loading commit data...
issue8756.go Loading commit data...
issue8811.c Loading commit data...
issue8811.go Loading commit data...
issue8828.go Loading commit data...
issue8945.go Loading commit data...
issue9026.go Loading commit data...
issue9400_linux.go Loading commit data...
issue9510.go Loading commit data...
issue9557.go Loading commit data...
setgid_linux.go Loading commit data...
sigaltstack.go Loading commit data...
sigprocmask.c Loading commit data...
sigprocmask.go Loading commit data...
test22906.go Loading commit data...
test26213.go Loading commit data...
test27660.go Loading commit data...
twoargs.go Loading commit data...