Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/compile: compiler data races on dowidth( ) with -c=4 #20145

Closed
ALTree opened this issue Apr 27, 2017 · 5 comments

Comments

Projects
None yet
3 participants
@ALTree
Copy link
Member

commented Apr 27, 2017

$ gotip version
go version devel +220e0e0f73 Thu Apr 27 04:42:21 2017 +0000 linux/amd64

The 2-files go program at the bottom of this issue reliably triggers a race report after a few seconds when built in a loop on a -race enabled toolchain on my 4-cpu system with

while true; do gotip build -gcflags -c=4; done

The race report:

# main
==================
WARNING: DATA RACE
Read at 0x00000166ef40 by goroutine 12:
  cmd/compile/internal/gc.dowidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:184 +0x293
  cmd/compile/internal/gc.canSSAType()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:3344 +0x3c
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:686 +0xc8f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:530 +0x213f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.buildssa()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:197 +0x1131
  cmd/compile/internal/gc.compileSSA()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:236 +0x52
  cmd/compile/internal/gc.compileFunctions.func2()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:268 +0x5a

Previous write at 0x00000166ef40 by goroutine 11:
  cmd/compile/internal/gc.dowidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:184 +0x2b2
  cmd/compile/internal/gc.canSSAType()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:3344 +0x3c
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:686 +0xc8f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:530 +0x213f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:526 +0x134
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.buildssa()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:197 +0x1131
  cmd/compile/internal/gc.compileSSA()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:236 +0x52
  cmd/compile/internal/gc.compileFunctions.func2()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:268 +0x5a

Goroutine 12 (running) created at:
  cmd/compile/internal/gc.compileFunctions()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:266 +0x148
  cmd/compile/internal/gc.Main()
      /home/adonizetti/go/src/cmd/compile/internal/gc/main.go:580 +0x3d9f
  main.main()
      /home/adonizetti/go/src/cmd/compile/main.go:49 +0xf5

Goroutine 11 (running) created at:
  cmd/compile/internal/gc.compileFunctions()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:266 +0x148
  cmd/compile/internal/gc.Main()
      /home/adonizetti/go/src/cmd/compile/internal/gc/main.go:580 +0x3d9f
  main.main()
      /home/adonizetti/go/src/cmd/compile/main.go:49 +0xf5
==================
==================
WARNING: DATA RACE
Read at 0x00000166ef78 by goroutine 12:
  cmd/compile/internal/gc.dowidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:186 +0x2dd
  cmd/compile/internal/gc.canSSAType()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:3344 +0x3c
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:686 +0xc8f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:530 +0x213f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.buildssa()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:197 +0x1131
  cmd/compile/internal/gc.compileSSA()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:236 +0x52
  cmd/compile/internal/gc.compileFunctions.func2()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:268 +0x5a

Previous write at 0x00000166ef78 by goroutine 11:
  cmd/compile/internal/gc.dowidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:367 +0x535
  cmd/compile/internal/gc.canSSAType()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:3344 +0x3c
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:686 +0xc8f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:530 +0x213f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:526 +0x134
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.buildssa()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:197 +0x1131
  cmd/compile/internal/gc.compileSSA()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:236 +0x52
  cmd/compile/internal/gc.compileFunctions.func2()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:268 +0x5a

Goroutine 12 (running) created at:
  cmd/compile/internal/gc.compileFunctions()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:266 +0x148
  cmd/compile/internal/gc.Main()
      /home/adonizetti/go/src/cmd/compile/internal/gc/main.go:580 +0x3d9f
  main.main()
      /home/adonizetti/go/src/cmd/compile/main.go:49 +0xf5

Goroutine 11 (running) created at:
  cmd/compile/internal/gc.compileFunctions()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:266 +0x148
  cmd/compile/internal/gc.Main()
      /home/adonizetti/go/src/cmd/compile/internal/gc/main.go:580 +0x3d9f
  main.main()
      /home/adonizetti/go/src/cmd/compile/main.go:49 +0xf5
==================
==================
WARNING: DATA RACE
Read at 0x000001644020 by goroutine 12:
  cmd/compile/internal/gc.checkwidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:415 +0x125
  cmd/compile/internal/gc.dowidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:330 +0x8bd
  cmd/compile/internal/gc.canSSAType()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:3344 +0x3c
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:686 +0xc8f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:530 +0x213f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.buildssa()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:197 +0x1131
  cmd/compile/internal/gc.compileSSA()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:236 +0x52
  cmd/compile/internal/gc.compileFunctions.func2()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:268 +0x5a

Previous write at 0x000001644020 by goroutine 11:
  cmd/compile/internal/gc.checkwidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:415 +0x1b7
  cmd/compile/internal/gc.dowidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:330 +0x8bd
  cmd/compile/internal/gc.canSSAType()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:3344 +0x3c
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:686 +0xc8f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:530 +0x213f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:526 +0x134
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.buildssa()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:197 +0x1131
  cmd/compile/internal/gc.compileSSA()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:236 +0x52
  cmd/compile/internal/gc.compileFunctions.func2()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:268 +0x5a

Goroutine 12 (running) created at:
  cmd/compile/internal/gc.compileFunctions()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:266 +0x148
  cmd/compile/internal/gc.Main()
      /home/adonizetti/go/src/cmd/compile/internal/gc/main.go:580 +0x3d9f
  main.main()
      /home/adonizetti/go/src/cmd/compile/main.go:49 +0xf5

Goroutine 11 (running) created at:
  cmd/compile/internal/gc.compileFunctions()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:266 +0x148
  cmd/compile/internal/gc.Main()
      /home/adonizetti/go/src/cmd/compile/internal/gc/main.go:580 +0x3d9f
  main.main()
      /home/adonizetti/go/src/cmd/compile/main.go:49 +0xf5
==================
==================
WARNING: DATA RACE
Write at 0x00c420079000 by goroutine 12:
  cmd/compile/internal/gc.checkwidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:415 +0x180
  cmd/compile/internal/gc.dowidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:330 +0x8bd
  cmd/compile/internal/gc.canSSAType()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:3344 +0x3c
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:686 +0xc8f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:530 +0x213f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.buildssa()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:197 +0x1131
  cmd/compile/internal/gc.compileSSA()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:236 +0x52
  cmd/compile/internal/gc.compileFunctions.func2()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:268 +0x5a

Previous write at 0x00c420079000 by goroutine 11:
  cmd/compile/internal/gc.checkwidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:415 +0x180
  cmd/compile/internal/gc.dowidth()
      /home/adonizetti/go/src/cmd/compile/internal/gc/align.go:330 +0x8bd
  cmd/compile/internal/gc.canSSAType()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:3344 +0x3c
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:686 +0xc8f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:530 +0x213f
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.(*state).stmt()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:526 +0x134
  cmd/compile/internal/gc.(*state).stmtList()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:511 +0x7e
  cmd/compile/internal/gc.buildssa()
      /home/adonizetti/go/src/cmd/compile/internal/gc/ssa.go:197 +0x1131
  cmd/compile/internal/gc.compileSSA()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:236 +0x52
  cmd/compile/internal/gc.compileFunctions.func2()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:268 +0x5a

Goroutine 12 (running) created at:
  cmd/compile/internal/gc.compileFunctions()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:266 +0x148
  cmd/compile/internal/gc.Main()
      /home/adonizetti/go/src/cmd/compile/internal/gc/main.go:580 +0x3d9f
  main.main()
      /home/adonizetti/go/src/cmd/compile/main.go:49 +0xf5

Goroutine 11 (running) created at:
  cmd/compile/internal/gc.compileFunctions()
      /home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:266 +0x148
  cmd/compile/internal/gc.Main()
      /home/adonizetti/go/src/cmd/compile/internal/gc/main.go:580 +0x3d9f
  main.main()
      /home/adonizetti/go/src/cmd/compile/main.go:49 +0xf5
==================
Found 4 data race(s)

The issue is reproducible on a non-race-enabled toolchain, where the program sometimes kills the compiler with a SIGSEGV:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x70 pc=0x96deb5]

goroutine 1 [running]:
cmd/compile/internal/gc.dowidth(0xc4205c1bc0)
	/home/adonizetti/go/src/cmd/compile/internal/gc/align.go:166 +0xc5
cmd/compile/internal/gc.resumecheckwidth()
	/home/adonizetti/go/src/cmd/compile/internal/gc/align.go:434 +0x5d
cmd/compile/internal/gc.dowidth(0xc4205cc000)
	/home/adonizetti/go/src/cmd/compile/internal/gc/align.go:370 +0x2bf
cmd/compile/internal/gc.checkwidth(0xc4205cc000)
	/home/adonizetti/go/src/cmd/compile/internal/gc/align.go:406 +0x17f
cmd/compile/internal/gc.dowidth(0xc4205c1bc0)
	/home/adonizetti/go/src/cmd/compile/internal/gc/align.go:330 +0x52b
cmd/compile/internal/gc.compile(0xc420516640)
	/home/adonizetti/go/src/cmd/compile/internal/gc/pgen.go:188 +0x48
cmd/compile/internal/gc.funccompile(0xc420516640)
	/home/adonizetti/go/src/cmd/compile/internal/gc/dcl.go:1049 +0xb7
cmd/compile/internal/gc.genhash(0xc4205c1680, 0xc4203180c0)
	/home/adonizetti/go/src/cmd/compile/internal/gc/alg.go:315 +0x931
cmd/compile/internal/gc.dalgsym(0xc4203180c0, 0xffffffffffffffff)
	/home/adonizetti/go/src/cmd/compile/internal/gc/reflect.go:1608 +0x5fd
cmd/compile/internal/gc.dcommontype(0xc420511650, 0x0, 0xc4203180c0, 0x48)
	/home/adonizetti/go/src/cmd/compile/internal/gc/reflect.go:793 +0xa3
cmd/compile/internal/gc.dtypesym(0xc4203180c0, 0xc42038b0e0)
	/home/adonizetti/go/src/cmd/compile/internal/gc/reflect.go:1128 +0xc8d
cmd/compile/internal/gc.dumpsignats()
	/home/adonizetti/go/src/cmd/compile/internal/gc/reflect.go:1441 +0x31b
cmd/compile/internal/gc.dumpobj1(0x7ffe42e8215c, 0x1d, 0x3)
	/home/adonizetti/go/src/cmd/compile/internal/gc/obj.go:141 +0x2af
cmd/compile/internal/gc.dumpobj()
	/home/adonizetti/go/src/cmd/compile/internal/gc/obj.go:51 +0x61
cmd/compile/internal/gc.Main(0xbaf770)
	/home/adonizetti/go/src/cmd/compile/internal/gc/main.go:616 +0x2305
main.main()
	/home/adonizetti/go/src/cmd/compile/main.go:49 +0x95

The program that triggers the problem:

a/a.go

package a

var x int

var Var1541 = (<-make(chan func(int16, uintptr, interface {
}) string))((([...][]int16{})[(([][]int{})[(int)(((([][2][1]rune{})[([]int{})[(map[struct {
	Field1572 error
}]int{})[(struct {
	Field1572 error
}{})]]])[(*((([][0]*int{})[((([][1]int{})[(int)((len)((([][1][]int16{})[(1)-(1)])[(*(([]*int{})[(([]int{})[(int)((*(([]*int16{})[([]int{})[1]])))])+(1)]))+(1)]))])[(<-make(chan int))])-(1)])[x]))+(1)])[(*(([]*int{})[([]int{})[0]]))])])[1]])[([]int{})[(int)((([][2]int16{})[(<-make(chan int))])[(int)(([]int16{})[(1)+(1)])])]], uintptr(0), interface {
}(nil))

var Var1234 = [...]string{(func(Param1538 []int, Param1539 map[float32]complex128) struct {
	Field1537 string
} {
	return Var1540
}([]int{}, make(map[float32]complex128, 1))).Field1537, "foo"}
var Var1540 = (([2]func(interface{}, byte, func(string, func(float32, interface{}, float64, uintptr) (error, uintptr), int16) []bool, interface{}) []struct {
	Field1537 string
}{0: ((func(interface{}, byte, func(string, func(float32, interface{}, float64, uintptr) (error, uintptr), int16) []bool, interface{}) []struct {
	Field1537 string
})(nil)), 1: ((func(interface{}, byte, func(string, func(float32, interface{}, float64, uintptr) (error, uintptr), int16) []bool, interface{}) []struct {
	Field1537 string
})(nil))})[(int)((len)(Var1541))](interface{}(nil), byte(0), ((func(string, func(float32, interface{}, float64, uintptr) (error, uintptr), int16) []bool)(nil)), interface{}(nil)))[([]int{})[(struct {
	Field2439 *error
	Field2440 int
}{}).Field2440]]

main/main.go

package main

import "a"

func main() {
}

func Func50(Param51 float32, Param52 byte, Param53 float32, Param54 uintptr) bool {
	var Var55 bool = (<-Var56)[(int)((len)(([]string{})[(<-make(chan int, 1))]))]
	_, Var1292 := ((func(*uintptr) float64)(nil)), interface{}(nil)
	(map[interface{}]error{})[interface{}(nil)] = error(nil)
	var Var1439 float64 = 1.0
	_ = Var55
	_ = Var1292
	_ = Var1439
	return false
}

var Var297 = [1]*func([1]float64) func(error, func(float32) (interface{}, *uintptr, string)) int{0: (*func([1]float64) func(error, func(float32) (interface{}, *uintptr, string)) int)(nil)}

var Var56 = (Var57)[((([0][]func(complex128, map[float64]interface{}) map[rune]int{})[(<-make(chan int))])[(int)((Var102)[((func(rune, string, uintptr, uint) int)(nil))(rune(0), "foo", uintptr(0), uint(1))])](1i, map[float64]interface{}{}))[rune(0)]]
var Var102 = (*(((<-([]func(byte, struct{}, int) chan [][2]*[1]byte{})[(int)((([][1]float64{})[(int)((([][2]uint{})[((func(func(map[bool]rune, [1]int, interface {
	Method171(rune, byte, string, complex128) (string, byte)
	Method172(interface{}, bool, rune, uintptr) complex64
}, error) (string, interface{}), byte, chan string, interface {
	Method173([]uint, chan byte, uintptr, string) (func(complex64, string) byte, bool, [1]rune)
}) int)(nil))(((func(map[bool]rune, [1]int, interface {
	Method171(rune, byte, string, complex128) (string, byte)
	Method172(interface{}, bool, rune, uintptr) complex64
}, error) (string, interface{}))(nil)), byte(0), make(chan string, 1), interface {
	Method173([]uint, chan byte, uintptr, string) (func(complex64, string) byte, bool, [1]rune)
}(nil))])[(Var232)+(1)])])[(int)((len)((a.Var1234)[(<-make(chan int, 1))]))])](byte(0), (struct{}{}), 1))[(Var232)-(1)])[Var232]))
var Var232 = (*((Var297)[((((([2][][2][1]int{})[(int)((len)((*(*(*(([]***string{})[((func([2]float64, func([]uint, uintptr, [1]complex128) ([0]byte, bool, []interface{}, int16), []error, struct{}) int)(nil))([2]float64{}, ((func([]uint, uintptr, [1]complex128) ([0]byte, bool, []interface{}, int16))(nil)), []error{}, (struct{}{}))]))))))])[(*(*((([][0]**int{})[(((Var738)[(make(map[uintptr]int, 1))[uintptr(0)]])[(<-make(chan int, 1))])[1-(1)]])[(*(([]*struct {
	Field1059 func(interface{}, uint) int16
	Field1060 chan int16
	Field1061 int
}{})[(<-make(chan int))])).Field1061])))+(1)])[(<-make(chan int, 1))])[(<-make(chan int))])+(1)]))([1]float64{})(error(nil), ((func(float32) (interface{}, *uintptr, string))(nil)))

var Var738 = [2][2][2]int{0: ([]func(interface{}, **float32, error, *[]complex64) [2][2]int{((func(interface{}, **float32, error, *[]complex64) [2][2]int)(nil))})[(1)-(([0]int{})[(<-make(chan int))])]((<-make(chan interface{})), (**float32)(nil), error(nil), (*[]complex64)(nil)), 1: [2][2]int{}}
var Var57 = [0]chan [0]bool{}

@ALTree ALTree added this to the Go1.9 milestone Apr 27, 2017

@ALTree

This comment has been minimized.

Copy link
Member Author

commented Apr 27, 2017

@ALTree

This comment has been minimized.

Copy link
Member Author

commented Apr 27, 2017

Do we care about short reproducers for data races or the race report is good enough? As you can imagine this stuff is hard to reduce because a little single-package single-function program won't trigger the race.

@ALTree ALTree changed the title cmd/compile: compiler data race on dowidth( ) with -c=4 cmd/compile: compiler data races on dowidth( ) with -c=4 Apr 27, 2017

@josharian

This comment has been minimized.

Copy link
Contributor

commented Apr 27, 2017

The race report is good enough.

And thanks, @ALTree! I'm thrilled that you are finding these.

@josharian

This comment has been minimized.

Copy link
Contributor

commented Apr 27, 2017

(The race report, and a reproducer, of course.)

@gopherbot

This comment has been minimized.

Copy link

commented Apr 27, 2017

CL https://golang.org/cl/41970 mentions this issue.

@gopherbot gopherbot closed this in 0b6a10e Apr 27, 2017

@golang golang locked and limited conversation to collaborators Apr 27, 2018

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
You can’t perform that action at this time.