Change ccdb50931f81 broke the openbsd-386-rootbsd build:
http://build.golang.org/log/9f064249338fbc56993146033edd7317977d1676
cmd/gc, runtime: make assertI2T and variants not variadic
A side effect of this change is that when assertI2T writes to the
memory for the T being extracted, it can use typedmemmove
for write barriers.
There are other ways we could have done this, but this one
finishes a TODO in package runtime.
Found with GODEBUG=wbshadow=2 mode.
Eventually that will run automatically, but right now
it still detects other missing write barriers.
Change-Id: Icbc8aabfd8a9b1f00be2e421af0e3b29fa54d01e
Reviewed-
https://golang.org/change/ccdb50931f81
$ tail -200 < log
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:396
+0x22 fp=0x185d6f18 sp=0x185d6f0c
reflect.Value.MapKeys(0x8194160, 0x185bc040, 0x15, 0x0, 0x0, 0x0)
/usr/local/go/src/reflect/value.go:1057 +0x176 fp=0x185d6f74 sp=0x185d6f18
runtime_test.func·058()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:270
+0x87 fp=0x185d6ff0 sp=0x185d6f74
runtime.goexit()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/asm_386.s:2367
+0x1 fp=0x185d6ff4 sp=0x185d6ff0
created by runtime_test.testConcurrentReadsAfterGrowth
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:274
+0x302
goroutine 45144 [semacquire]:
runtime.gopark(0x8247d94, 0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:151
+0xda fp=0x18590ddc sp=0x18590dc4
runtime.goparkunlock(0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:157
+0x3b fp=0x18590df0 sp=0x18590ddc
runtime.semacquire(0x82d0044, 0x8073700)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/sema.go:100
+0x201 fp=0x18590e10 sp=0x18590df0
runtime.gogc(0x0)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:469
+0x89 fp=0x18590e68 sp=0x18590e10
runtime.mallocgc(0x30, 0x81da300, 0x0, 0x8055d02)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:349
+0x36a fp=0x18590ef0 sp=0x18590e68
runtime.newobject(0x81da300, 0x1)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:391
+0x42 fp=0x18590f04 sp=0x18590ef0
reflect.mapiterinit(0x8194160, 0x185bc040, 0x15)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/hashmap.go:939
+0x22 fp=0x18590f18 sp=0x18590f04
reflect.Value.MapKeys(0x8194160, 0x185bc040, 0x15, 0x0, 0x0, 0x0)
/usr/local/go/src/reflect/value.go:1043 +0xb8 fp=0x18590f74 sp=0x18590f18
runtime_test.func·058()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:270
+0x87 fp=0x18590ff0 sp=0x18590f74
runtime.goexit()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/asm_386.s:2367
+0x1 fp=0x18590ff4 sp=0x18590ff0
created by runtime_test.testConcurrentReadsAfterGrowth
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:274
+0x302
goroutine 45171 [semacquire]:
runtime.gopark(0x8247d94, 0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:151
+0xda fp=0x18585ddc sp=0x18585dc4
runtime.goparkunlock(0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:157
+0x3b fp=0x18585df0 sp=0x18585ddc
runtime.semacquire(0x82d0044, 0xdeadde00)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/sema.go:100
+0x201 fp=0x18585e10 sp=0x18585df0
runtime.gogc(0x0)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:469
+0x89 fp=0x18585e68 sp=0x18585e10
runtime.mallocgc(0x30, 0x81da300, 0x0, 0x0)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:349
+0x36a fp=0x18585ef0 sp=0x18585e68
runtime.newobject(0x81da300, 0xe0)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:391
+0x42 fp=0x18585f04 sp=0x18585ef0
reflect.mapiterinit(0x8194160, 0x185bc040, 0x15)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/hashmap.go:939
+0x22 fp=0x18585f18 sp=0x18585f04
reflect.Value.MapKeys(0x8194160, 0x185bc040, 0x15, 0x0, 0x0, 0x0)
/usr/local/go/src/reflect/value.go:1043 +0xb8 fp=0x18585f74 sp=0x18585f18
runtime_test.func·058()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:270
+0x87 fp=0x18585ff0 sp=0x18585f74
runtime.goexit()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/asm_386.s:2367
+0x1 fp=0x18585ff4 sp=0x18585ff0
created by runtime_test.testConcurrentReadsAfterGrowth
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:274
+0x302
goroutine 44412 [semacquire]:
runtime.gopark(0x8247d94, 0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:151
+0xda fp=0x185175f8 sp=0x185175e0
runtime.goparkunlock(0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:157
+0x3b fp=0x1851760c sp=0x185175f8
runtime.semacquire(0x82d0044, 0x0)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/sema.go:100
+0x201 fp=0x1851762c sp=0x1851760c
runtime.gogc(0x0)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:469
+0x89 fp=0x18517684 sp=0x1851762c
runtime.mallocgc(0x10, 0x81e43c0, 0x0, 0x4)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:349
+0x36a fp=0x1851770c sp=0x18517684
runtime.newobject(0x81e43c0, 0x1853a7dc)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:391
+0x42 fp=0x18517720 sp=0x1851770c
reflect.Value.MapIndex(0x8194160, 0x185bc040, 0x15, 0x81937e0, 0x185e3d3c,
0x42, 0x81937e0, 0x18598380, 0x42)
/usr/local/go/src/reflect/value.go:990 +0x22 fp=0x18517774 sp=0x18517720
runtime_test.func·058()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:272
+0x112 fp=0x185177f0 sp=0x18517774
runtime.goexit()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/asm_386.s:2367
+0x1 fp=0x185177f4 sp=0x185177f0
created by runtime_test.testConcurrentReadsAfterGrowth
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:274
+0x302
goroutine 45174 [semacquire]:
runtime.gopark(0x8247d94, 0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:151
+0xda fp=0x185cd5dc sp=0x185cd5c4
runtime.goparkunlock(0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:157
+0x3b fp=0x185cd5f0 sp=0x185cd5dc
runtime.semacquire(0x82d0044, 0x82e5700)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/sema.go:100
+0x201 fp=0x185cd610 sp=0x185cd5f0
runtime.gogc(0x0)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:469
+0x89 fp=0x185cd668 sp=0x185cd610
runtime.mallocgc(0x30, 0x81da300, 0x0, 0x8055d02)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:349
+0x36a fp=0x185cd6f0 sp=0x185cd668
runtime.newobject(0x81da300, 0x1)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:391
+0x42 fp=0x185cd704 sp=0x185cd6f0
reflect.mapiterinit(0x8194160, 0x185bc040, 0x15)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/hashmap.go:939
+0x22 fp=0x185cd718 sp=0x185cd704
reflect.Value.MapKeys(0x8194160, 0x185bc040, 0x15, 0x0, 0x0, 0x0)
/usr/local/go/src/reflect/value.go:1043 +0xb8 fp=0x185cd774 sp=0x185cd718
runtime_test.func·058()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:270
+0x87 fp=0x185cd7f0 sp=0x185cd774
runtime.goexit()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/asm_386.s:2367
+0x1 fp=0x185cd7f4 sp=0x185cd7f0
created by runtime_test.testConcurrentReadsAfterGrowth
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:274
+0x302
goroutine 45138 [semacquire]:
runtime.gopark(0x8247d94, 0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:151
+0xda fp=0x18517ddc sp=0x18517dc4
runtime.goparkunlock(0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:157
+0x3b fp=0x18517df0 sp=0x18517ddc
runtime.semacquire(0x82d0044, 0x82e5700)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/sema.go:100
+0x201 fp=0x18517e10 sp=0x18517df0
runtime.gogc(0x0)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:469
+0x89 fp=0x18517e68 sp=0x18517e10
runtime.mallocgc(0x30, 0x81da300, 0x0, 0x8055d02)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:349
+0x36a fp=0x18517ef0 sp=0x18517e68
runtime.newobject(0x81da300, 0x1)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:391
+0x42 fp=0x18517f04 sp=0x18517ef0
reflect.mapiterinit(0x8194160, 0x185bc040, 0x15)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/hashmap.go:939
+0x22 fp=0x18517f18 sp=0x18517f04
reflect.Value.MapKeys(0x8194160, 0x185bc040, 0x15, 0x0, 0x0, 0x0)
/usr/local/go/src/reflect/value.go:1043 +0xb8 fp=0x18517f74 sp=0x18517f18
runtime_test.func·058()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:270
+0x87 fp=0x18517ff0 sp=0x18517f74
runtime.goexit()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/asm_386.s:2367
+0x1 fp=0x18517ff4 sp=0x18517ff0
created by runtime_test.testConcurrentReadsAfterGrowth
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:274
+0x302
goroutine 45165 [semacquire]:
runtime.gopark(0x8247d94, 0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:151
+0xda fp=0x185d15dc sp=0x185d15c4
runtime.goparkunlock(0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:157
+0x3b fp=0x185d15f0 sp=0x185d15dc
runtime.semacquire(0x82d0044, 0x82e5700)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/sema.go:100
+0x201 fp=0x185d1610 sp=0x185d15f0
runtime.gogc(0x0)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:469
+0x89 fp=0x185d1668 sp=0x185d1610
runtime.mallocgc(0x30, 0x81da300, 0x0, 0x8055d02)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:349
+0x36a fp=0x185d16f0 sp=0x185d1668
runtime.newobject(0x81da300, 0x1)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:391
+0x42 fp=0x185d1704 sp=0x185d16f0
reflect.mapiterinit(0x8194160, 0x185bc040, 0x15)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/hashmap.go:939
+0x22 fp=0x185d1718 sp=0x185d1704
reflect.Value.MapKeys(0x8194160, 0x185bc040, 0x15, 0x0, 0x0, 0x0)
/usr/local/go/src/reflect/value.go:1043 +0xb8 fp=0x185d1774 sp=0x185d1718
runtime_test.func·058()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:270
+0x87 fp=0x185d17f0 sp=0x185d1774
runtime.goexit()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/asm_386.s:2367
+0x1 fp=0x185d17f4 sp=0x185d17f0
created by runtime_test.testConcurrentReadsAfterGrowth
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:274
+0x302
goroutine 45141 [semacquire]:
runtime.gopark(0x8247d94, 0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:151
+0xda fp=0x1858cddc sp=0x1858cdc4
runtime.goparkunlock(0x82e57a0, 0x81f4158, 0xa)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/proc.go:157
+0x3b fp=0x1858cdf0 sp=0x1858cddc
runtime.semacquire(0x82d0044, 0x82e5700)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/sema.go:100
+0x201 fp=0x1858ce10 sp=0x1858cdf0
runtime.gogc(0x0)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:469
+0x89 fp=0x1858ce68 sp=0x1858ce10
runtime.mallocgc(0x30, 0x81da300, 0x0, 0x8055d02)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:349
+0x36a fp=0x1858cef0 sp=0x1858ce68
runtime.newobject(0x81da300, 0x1)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/malloc.go:391
+0x42 fp=0x1858cf04 sp=0x1858cef0
reflect.mapiterinit(0x8194160, 0x185bc040, 0x15)
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/hashmap.go:939
+0x22 fp=0x1858cf18 sp=0x1858cf04
reflect.Value.MapKeys(0x8194160, 0x185bc040, 0x15, 0x0, 0x0, 0x0)
/usr/local/go/src/reflect/value.go:1043 +0xb8 fp=0x1858cf74 sp=0x1858cf18
runtime_test.func·058()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:270
+0x87 fp=0x1858cff0 sp=0x1858cf74
runtime.goexit()
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/asm_386.s:2367
+0x1 fp=0x1858cff4 sp=0x1858cff0
created by runtime_test.testConcurrentReadsAfterGrowth
/home/gopher/gobuilder/openbsd-386-rootbsd-ccdb50931f81/go/src/runtime/map_test.go:274
+0x302
FAIL runtime 44.921s
? runtime/cgo [no test files]
ok runtime/debug 0.054s
ok runtime/pprof 8.786s
? runtime/race [no test files]
ok sort 0.402s
ok strconv 0.491s
ok strings 0.265s
ok sync 0.361s
ok sync/atomic 0.338s
ok syscall 0.077s
ok testing 2.039s
? testing/iotest [no test files]
ok testing/quick 0.104s
ok text/scanner 0.027s
ok text/tabwriter 0.030s
ok text/template 1.329s
ok text/template/parse 0.083s
ok time 3.885s
ok unicode 0.235s
ok unicode/utf16 0.058s
ok unicode/utf8 0.036s
? unsafe [no test files]
Build complete, duration 6m52.110276027s. Result: error: exit status 1