1
0
mirror of https://github.com/golang/go synced 2024-11-23 05:50:05 -07:00

runtime: call msanwrite on object passed to runtime/cgo

Avoids an msan error when runtime/cgo is explicitly rebuilt with
-fsanitize=memory.

Fixes #13815.

Change-Id: I70308034011fb308b63585bcd40b0d1e62ec93ef
Reviewed-on: https://go-review.googlesource.com/18263
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
Ian Lance Taylor 2016-01-05 14:06:58 -08:00
parent 17ce03725c
commit 934e055f41
2 changed files with 9 additions and 1 deletions

View File

@ -61,7 +61,12 @@ if ! go run -msan msan.go; then
status=1
fi
if ! go run -msan msan2.go; then
if ! CGO_LDFLAGS="-fsanitize=memory" CGO_CPPFLAGS="-fsanitize=memory" go run -msan -a msan2.go; then
echo "FAIL: msan2 with -fsanitize=memory"
status=1
fi
if ! go run -msan -a msan2.go; then
echo "FAIL: msan2"
status=1
fi

View File

@ -1489,6 +1489,9 @@ func newm(fn func(), _p_ *p) {
ts.g.set(mp.g0)
ts.tls = (*uint64)(unsafe.Pointer(&mp.tls[0]))
ts.fn = unsafe.Pointer(funcPC(mstart))
if msanenabled {
msanwrite(unsafe.Pointer(&ts), unsafe.Sizeof(ts))
}
asmcgocall(_cgo_thread_start, unsafe.Pointer(&ts))
return
}