When the race detector is enabled, scribble over copy buffers with
garbage after Write returns.
For #58452
Change-Id: I25547684bcbef7d302d76736cb02e59c89a640ee
Reviewed-on: https://go-review.googlesource.com/c/go/+/466865
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Damien Neil <dneil@google.com>
import (
"errors"
+ "internal/race"
"sync"
)
nr, er := src.Read(buf)
if nr > 0 {
nw, ew := dst.Write(buf[0:nr])
+ if race.Enabled {
+ // Write over the buffer to help the race detector
+ // detect Write calls that access the buffer after returning.
+ // Use something other than zeros to make errors more obvious.
+ for i := range buf[:nr] {
+ buf[i] = 0xdd
+ }
+ }
if nw < 0 || nr < nw {
nw = 0
if ew == nil {