Building Go 1.10 with the Go 1.4 bootstrap, Thread Sanitizer from GCC 5
finds a data race during the the test suite of Go 1.10. With GCC 6, the
race doesn't seem to be present.
.##### ../misc/cgo/testsanitizers
--- FAIL: TestShared (0.03s)
--- FAIL: TestShared/tsan_shared (2.54s)
cshared_test.go:71: `/tmp/guix-build-go-1.10.drv-0/TestShared367937240/tsan_shared` exited with exit status 66
==================
WARNING: ThreadSanitizer: data race (pid=28778)
Write of size 8 at 0x7ffff5495c30 by thread T1:
#0 pthread_attr_getstacksize <null> (tsan_shared+0x00000041be82)
#1 x_cgo_init <null> (libtsan_shared.so+0x00000008aeaf)
#2 runtime.rt0_go /tmp/guix-build-go-1.10.drv-0/go/src/runtime/asm_amd64.s:199 (libtsan_shared.so+0x000000081586)
Previous write of size 8 at 0x7ffff5495c30 by main thread:
#0 <null> <null> (0x000000000001)
Location is stack of thread T1.
Thread T1 (tid=28786, running) created by main thread at:
#0 pthread_create <null> (tsan_shared+0x00000040c794)
#1 _cgo_try_pthread_create <null> (libtsan_shared.so+0x00000008ad70)
#2 x_cgo_sys_thread_create <null> (libtsan_shared.so+0x00000008ab12)
#3 _rt0_amd64_lib /tmp/guix-build-go-1.10.drv-0/go/src/runtime/asm_amd64.s:56 (libtsan_shared.so+0x0000000813b6)
SUMMARY: ThreadSanitizer: data race ??:0 __interceptor_pthread_attr_getstacksize
* gnu/packages/golang.scm (go-1.10): New variable.
(go-1.4)[native-inputs]: Use gcc:lib version 6.
* gnu/packages/golang.scm (go@1.4)[supported-systems]: New field,
Limit supported systems to x86_64-linux, i686-linux and armhf-linux.
(go@1.9)[supported-systems]: New field.
* gnu/packages/golang.scm (go-1.7): Replace with ...
(go-1.8): New variable.
[arguments]: Update substitutions in 'prebuild' phase.
(go): Update to go-1.8.
* gnu/packages/golang.scm (go-1.6): Update to 1.7, with corresponding
minor changes to prebuild phase, and rename variable to...
(go-1.7): ...this new variable.
(go): Inherit from new "go-1.7".
Signed-off-by: Efraim Flashner <efraim@flashner.co.il>