Description
Many of the builders are failing with a fault in go list std cmd such as the one below. I can reproduce this in about 1 in 10 runs with
stress go list cmd
This appears to be a combination of stack barriers and GOMAXPROCS>1. With GOMAXPROCS=1 or with stack barriers disabled, it doesn't happen.
I think this may be a write through an up-pointer without a write barrier. With the series ending at CL 10791 applied (which fixes checkmarks mode and some bugs in stack barriers), if you set GODEBUG=gccheckmark=1, it quickly fails with a checkmark failure from a slot in the stack that's a fair bit above the next stack barrier for that stack. I confirmed that this is not the known problem with unbuffered channel sends writing to a remote stack.
Annoyingly, I can't reproduce this in my memory tracing Pin tool, so I can't take the brute force approach to finding out what wrote to that stack slot. This also suggests that there may be a race involved that Pin's slow down is preventing.
From http://build.golang.org/log/0641f2eba9b33697d963dd2e22cbffe7a99bcbd4:
2015/06/06 20:38:42 Error running go list std cmd: exit status 2, unexpected fault address 0x43202f2f
fatal error: fault
[signal 0xb code=0x1 addr=0x43202f2f pc=0x8167ab4]
goroutine 1 [running]:
runtime.throw(0x844c358, 0x5)
/tmp/workdir/go/src/runtime/panic.go:527 +0x7f fp=0x18af5a7c sp=0x18af5a70
runtime.sigpanic()
/tmp/workdir/go/src/runtime/sigpanic_unix.go:27 +0x276 fp=0x18af5aa8 sp=0x18af5a7c
strings.Index(0x43202f2f, 0x7279706f, 0x8442810, 0x3, 0xffffffff)
/tmp/workdir/go/src/strings/strings.go:166 +0x104 fp=0x18af5adc sp=0x18af5aa8
strings.Contains(0x43202f2f, 0x7279706f, 0x8442810, 0x3, 0x0)
/tmp/workdir/go/src/strings/strings.go:133 +0x39 fp=0x18af5af4 sp=0x18af5adc
main.importPaths(0x18ca2000, 0xd1, 0x140, 0x0, 0x0, 0x0)
/tmp/workdir/go/src/cmd/go/main.go:341 +0xfa fp=0x18af5ba0 sp=0x18af5af4
main.packagesAndErrors(0x1880a140, 0x2, 0x2, 0x0, 0x0, 0x0)
/tmp/workdir/go/src/cmd/go/pkg.go:1007 +0x1a4 fp=0x18af5ca4 sp=0x18af5ba0
main.packages(0x1880a140, 0x2, 0x2, 0x0, 0x0, 0x0)
/tmp/workdir/go/src/cmd/go/pkg.go:988 +0x64 fp=0x18af5d18 sp=0x18af5ca4
main.runList(0x864df40, 0x1880a140, 0x2, 0x2)
/tmp/workdir/go/src/cmd/go/list.go:177 +0x192 fp=0x18af5e18 sp=0x18af5d18
main.main()
/tmp/workdir/go/src/cmd/go/main.go:177 +0x656 fp=0x18af5fa8 sp=0x18af5e18
runtime.main()
/tmp/workdir/go/src/runtime/proc.go:111 +0x276 fp=0x18af5fd0 sp=0x18af5fa8
runtime.goexit()
/tmp/workdir/go/src/runtime/asm_386.s:1666 +0x1 fp=0x18af5fd4 sp=0x18af5fd0
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/tmp/workdir/go/src/runtime/asm_386.s:1666 +0x1
goroutine 5 [syscall]:
os/signal.loop()
/tmp/workdir/go/src/os/signal/signal_unix.go:22 +0x1a
created by os/signal.init.1
/tmp/workdir/go/src/os/signal/signal_unix.go:28 +0x36