Closed karalabe closed 6 years ago
Does this also happen with git master, soon to be go1.10?
We've received a similar crash from a user running Linux (https://github.com/ethereum/go-ethereum/issues/15743), so it seems to be unrelated to Windows itself and may be a general fault on 386. I'll have to check latest master.
I'll have to check latest master.
This works fine for me for recent version of Go:
C:\Documents and Settings\aa\dev\src\github.com\ethereum\go-ethereum\dashboard>git rev-parse HEAD
9d187f02389ba12493112c7feb15a83f44e3a3ff
C:\Documents and Settings\aa\dev\src\github.com\ethereum\go-ethereum\dashboard>git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
C:\Documents and Settings\aa\dev\src\github.com\ethereum\go-ethereum\dashboard>go version
go version devel +46c5856 Mon Dec 25 00:07:22 2017 +0000 windows/386
C:\Documents and Settings\aa\dev\src\github.com\ethereum\go-ethereum\dashboard>go build -o %TMP%\a.exe
C:\Documents and Settings\aa\dev\src\github.com\ethereum\go-ethereum\dashboard>
Alex
Go 1.10beta1 blows up on AppVeyor the same way https://ci.appveyor.com/project/ethereum/go-ethereum/build/master.4840/job/y99c2g1ywdho2d34#L264
I'll have to try somehow a master build on AppVeyor to see if it's still present on latest code.
Managed to reliably reproduce it locally with Go 1.10, both beta1 and latest master. The invocation is a bit different than my repro for Go1.9.2:
Go 1.10beta1, prebuilt from the website:
>go version
go version go1.10beta1 windows/386
>go env
set GOARCH=386
set GOBIN=
set GOCACHE=C:\Users\karalabe\AppData\Local\go-build
set GOEXE=.exe
set GOHOSTARCH=386
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\karalabe\go
set GORACE=
set GOROOT=c:\Work\go
set GOTMPDIR=
set GOTOOLDIR=c:\Work\go\pkg\tool\windows_386
set GCCGO=gccgo
set GO386=sse2
set CC=C:\Work\mingw32\bin\gcc.exe
set CXX=g++
set CGO_ENABLED=1
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m32 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\karalabe\AppData\Local\Temp\go-build737290554=/tmp/go-build -gno-record-gcc-switches
>go test -v github.com/ethereum/go-ethereum/dashboard
# github.com/ethereum/go-ethereum/dashboard
runtime: VirtualAlloc of 1703936 bytes failed with errno=487
fatal error: runtime: cannot map pages in arena address space
runtime stack:
runtime.throw(0x687ecf, 0x30)
c:/go/src/runtime/panic.go:616 +0x6b
runtime.sysMap(0x437f0000, 0x1a0000, 0x2bcfe01, 0x7cb838)
c:/go/src/runtime/mem_windows.go:124 +0x100
runtime.(*mheap).sysAlloc(0x7bb880, 0x1a0000, 0x9fe94)
c:/go/src/runtime/malloc.go:470 +0x22f
runtime.(*mheap).grow(0x7bb880, 0xcc, 0x0)
c:/go/src/runtime/mheap.go:907 +0x4e
runtime.(*mheap).allocSpanLocked(0x7bb880, 0xcc, 0x7cb848, 0x160000)
c:/go/src/runtime/mheap.go:820 +0x2e4
runtime.(*mheap).alloc_m(0x7bb880, 0xcc, 0x40d90101, 0x41d272)
c:/go/src/runtime/mheap.go:686 +0x115
runtime.(*mheap).alloc.func1()
c:/go/src/runtime/mheap.go:753 +0x40
runtime.(*mheap).alloc(0x7bb880, 0xcc, 0x33000101, 0x421316)
c:/go/src/runtime/mheap.go:752 +0x6c
runtime.largeAlloc(0x196151, 0x440100, 0x43570000)
c:/go/src/runtime/malloc.go:826 +0x7b
runtime.mallocgc.func1()
c:/go/src/runtime/malloc.go:721 +0x39
runtime.systemstack(0x0)
c:/go/src/runtime/asm_386.s:464 +0x5e
runtime.mstart()
c:/go/src/runtime/proc.go:1170
goroutine 1 [running]:
runtime.systemstack_switch()
c:/go/src/runtime/asm_386.s:418 fp=0x1470a888 sp=0x1470a884 pc=0x44abc0
runtime.mallocgc(0x196151, 0x0, 0x0, 0x0)
c:/go/src/runtime/malloc.go:720 +0x67b fp=0x1470a8dc sp=0x1470a888 pc=0x40e70b
runtime.rawstring(0x196151, 0x0, 0x0, 0x0, 0x0, 0x0)
c:/go/src/runtime/string.go:245 +0x56 fp=0x1470a8f0 sp=0x1470a8dc pc=0x43c746
runtime.rawstringtmp(0x0, 0x196151, 0x0, 0x0, 0x0, 0x0, 0x0)
c:/go/src/runtime/string.go:115 +0x51 fp=0x1470a90c sp=0x1470a8f0 pc=0x43c2b1
runtime.concatstrings(0x0, 0x1470a970, 0x2, 0x2, 0x0, 0x401a8f)
c:/go/src/runtime/string.go:46 +0xc5 fp=0x1470a950 sp=0x1470a90c pc=0x43bf15
runtime.concatstring2(0x0, 0x43570000, 0x196148, 0x12f3b251, 0x9, 0x138461d0, 0x6b5960)
c:/go/src/runtime/string.go:55 +0x39 fp=0x1470a96c sp=0x1470a950 pc=0x43c079
go/constant.BinaryOp(0x6b5960, 0x138461d0, 0xc, 0x6b5960, 0x138461d8, 0x0, 0x0)
c:/go/src/go/constant/value.go:1113 +0xac0 fp=0x1470aa8c sp=0x1470a96c pc=0x53ec90
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x133b3f00, 0x6b5150, 0x133b3ee0, 0x6b5130, 0x12ee3090, 0xc)
c:/go/src/go/types/expr.go:841 +0x3ea fp=0x1470aaf8 sp=0x1470aa8c pc=0x552f7a
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f00, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470ae14 sp=0x1470aaf8 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f00, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470ae6c sp=0x1470ae14 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f00)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470ae9c sp=0x1470ae6c pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f00)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470aeb0 sp=0x1470ae9c pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x133b3f20, 0x6b5150, 0x133b3f00, 0x6b5130, 0x12ee30a0, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470af1c sp=0x1470aeb0 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f20, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470b238 sp=0x1470af1c pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f20, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470b290 sp=0x1470b238 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f20)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470b2c0 sp=0x1470b290 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f20)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470b2d4 sp=0x1470b2c0 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x133b3f40, 0x6b5150, 0x133b3f20, 0x6b5130, 0x12ee30b0, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470b340 sp=0x1470b2d4 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f40, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470b65c sp=0x1470b340 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f40, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470b6b4 sp=0x1470b65c pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f40)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470b6e4 sp=0x1470b6b4 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f40)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470b6f8 sp=0x1470b6e4 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x133b3f60, 0x6b5150, 0x133b3f40, 0x6b5130, 0x12ee30c0, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470b764 sp=0x1470b6f8 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f60, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470ba80 sp=0x1470b764 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f60, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470bad8 sp=0x1470ba80 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f60)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470bb08 sp=0x1470bad8 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f60)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470bb1c sp=0x1470bb08 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x133b3f80, 0x6b5150, 0x133b3f60, 0x6b5130, 0x12ee30d0, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470bb88 sp=0x1470bb1c pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f80, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470bea4 sp=0x1470bb88 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f80, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470befc sp=0x1470bea4 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f80)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470bf2c sp=0x1470befc pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3f80)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470bf40 sp=0x1470bf2c pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x133b3fa0, 0x6b5150, 0x133b3f80, 0x6b5130, 0x12ee30e0, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470bfac sp=0x1470bf40 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fa0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470c2c8 sp=0x1470bfac pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fa0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470c320 sp=0x1470c2c8 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fa0)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470c350 sp=0x1470c320 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fa0)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470c364 sp=0x1470c350 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x133b3fc0, 0x6b5150, 0x133b3fa0, 0x6b5130, 0x12ee30f0, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470c3d0 sp=0x1470c364 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fc0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470c6ec sp=0x1470c3d0 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fc0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470c744 sp=0x1470c6ec pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fc0)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470c774 sp=0x1470c744 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fc0)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470c788 sp=0x1470c774 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x133b3fe0, 0x6b5150, 0x133b3fc0, 0x6b5130, 0x12ee3100, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470c7f4 sp=0x1470c788 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fe0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470cb10 sp=0x1470c7f4 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fe0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470cb68 sp=0x1470cb10 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fe0)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470cb98 sp=0x1470cb68 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x133b3fe0)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470cbac sp=0x1470cb98 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b0000, 0x6b5150, 0x133b3fe0, 0x6b5130, 0x12ee3110, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470cc18 sp=0x1470cbac pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0000, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470cf34 sp=0x1470cc18 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0000, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470cf8c sp=0x1470cf34 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0000)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470cfbc sp=0x1470cf8c pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0000)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470cfd0 sp=0x1470cfbc pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b0020, 0x6b5150, 0x135b0000, 0x6b5130, 0x12ee3120, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470d03c sp=0x1470cfd0 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0020, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470d358 sp=0x1470d03c pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0020, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470d3b0 sp=0x1470d358 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0020)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470d3e0 sp=0x1470d3b0 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0020)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470d3f4 sp=0x1470d3e0 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b0040, 0x6b5150, 0x135b0020, 0x6b5130, 0x12ee3130, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470d460 sp=0x1470d3f4 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0040, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470d77c sp=0x1470d460 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0040, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470d7d4 sp=0x1470d77c pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0040)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470d804 sp=0x1470d7d4 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0040)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470d818 sp=0x1470d804 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b0060, 0x6b5150, 0x135b0040, 0x6b5130, 0x12ee3140, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470d884 sp=0x1470d818 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0060, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470dba0 sp=0x1470d884 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0060, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470dbf8 sp=0x1470dba0 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0060)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470dc28 sp=0x1470dbf8 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0060)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470dc3c sp=0x1470dc28 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b0080, 0x6b5150, 0x135b0060, 0x6b5130, 0x12ee3150, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470dca8 sp=0x1470dc3c pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0080, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470dfc4 sp=0x1470dca8 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0080, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470e01c sp=0x1470dfc4 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0080)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470e04c sp=0x1470e01c pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0080)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470e060 sp=0x1470e04c pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b00a0, 0x6b5150, 0x135b0080, 0x6b5130, 0x12ee3160, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470e0cc sp=0x1470e060 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00a0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470e3e8 sp=0x1470e0cc pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00a0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470e440 sp=0x1470e3e8 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00a0)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470e470 sp=0x1470e440 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00a0)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470e484 sp=0x1470e470 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b00c0, 0x6b5150, 0x135b00a0, 0x6b5130, 0x12ee3170, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470e4f0 sp=0x1470e484 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00c0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470e80c sp=0x1470e4f0 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00c0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470e864 sp=0x1470e80c pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00c0)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470e894 sp=0x1470e864 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00c0)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470e8a8 sp=0x1470e894 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b00e0, 0x6b5150, 0x135b00c0, 0x6b5130, 0x12ee3180, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470e914 sp=0x1470e8a8 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00e0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470ec30 sp=0x1470e914 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00e0, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470ec88 sp=0x1470ec30 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00e0)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470ecb8 sp=0x1470ec88 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b00e0)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470eccc sp=0x1470ecb8 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b0100, 0x6b5150, 0x135b00e0, 0x6b5130, 0x12ee3190, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470ed38 sp=0x1470eccc pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0100, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470f054 sp=0x1470ed38 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0100, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470f0ac sp=0x1470f054 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0100)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470f0dc sp=0x1470f0ac pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0100)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470f0f0 sp=0x1470f0dc pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b0120, 0x6b5150, 0x135b0100, 0x6b5130, 0x12ee31a0, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470f15c sp=0x1470f0f0 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0120, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470f478 sp=0x1470f15c pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0120, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470f4d0 sp=0x1470f478 pc=0x553d1d
go/types.(*Checker).multiExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0120)
c:/go/src/go/types/expr.go:1549 +0x4d fp=0x1470f500 sp=0x1470f4d0 pc=0x55781d
go/types.(*Checker).expr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0120)
c:/go/src/go/types/expr.go:1543 +0x39 fp=0x1470f514 sp=0x1470f500 pc=0x5577a9
go/types.(*Checker).binary(0x12f35e30, 0x1453e9e0, 0x135b0140, 0x6b5150, 0x135b0120, 0x6b5130, 0x12ee31b0, 0xc)
c:/go/src/go/types/expr.go:766 +0x53 fp=0x1470f580 sp=0x1470f514 pc=0x552be3
go/types.(*Checker).exprInternal(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0140, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:1477 +0x191b fp=0x1470f89c sp=0x1470f580 pc=0x55589b
go/types.(*Checker).rawExpr(0x12f35e30, 0x1453e9e0, 0x6b5150, 0x135b0140, 0x0, 0x0, 0x0)
c:/go/src/go/types/expr.go:969 +0x4d fp=0x1470f8f4 sp=0x1470f89c pc=0x553d1d
...additional frames elided...
Go master, built locally:
>go version
go version devel +0770aaca35 Sat Dec 30 21:59:34 2017 +0000 windows/386
>go env
set GOARCH=386
set GOBIN=
set GOCACHE=C:\Users\karalabe\AppData\Local\go-build
set GOEXE=.exe
set GOHOSTARCH=386
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\karalabe\go
set GORACE=
set GOROOT=c:\Work\go
set GOTMPDIR=
set GOTOOLDIR=c:\Work\go\pkg\tool\windows_386
set GCCGO=gccgo
set GO386=sse2
set CC=C:\Work\mingw32\bin\gcc.exe
set CXX=g++
set CGO_ENABLED=1
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m32 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\karalabe\AppData\Local\Temp\go-build726231898=/tmp/go-build -gno-record-gcc-switches
>go test -v github.com/ethereum/go-ethereum/dashboard
# github.com/ethereum/go-ethereum/dashboard
runtime: VirtualAlloc of 1703936 bytes failed with errno=487
fatal error: runtime: cannot map pages in arena address space
runtime stack:
runtime.throw(0x688a52, 0x30)
c:/Work/go/src/runtime/panic.go:616 +0x6b
runtime.sysMap(0x43830000, 0x1a0000, 0x3366fe01, 0x7cd878)
c:/Work/go/src/runtime/mem_windows.go:124 +0x100
runtime.(*mheap).sysAlloc(0x7bd8c0, 0x1a0000, 0x137a9)
c:/Work/go/src/runtime/malloc.go:470 +0x22f
runtime.(*mheap).grow(0x7bd8c0, 0xcc, 0x0)
c:/Work/go/src/runtime/mheap.go:907 +0x4e
runtime.(*mheap).allocSpanLocked(0x7bd8c0, 0xcc, 0x7cd888, 0x1f0000)
c:/Work/go/src/runtime/mheap.go:820 +0x2e4
runtime.(*mheap).alloc_m(0x7bd8c0, 0xcc, 0x40d20101, 0x41d292)
c:/Work/go/src/runtime/mheap.go:686 +0x115
runtime.(*mheap).alloc.func1()
c:/Work/go/src/runtime/mheap.go:753 +0x40
runtime.(*mheap).alloc(0x7bd8c0, 0xcc, 0x33000101, 0x421336)
c:/Work/go/src/runtime/mheap.go:752 +0x6c
runtime.largeAlloc(0x196151, 0x440100, 0x435b0000)
c:/Work/go/src/runtime/malloc.go:826 +0x7b
runtime.mallocgc.func1()
c:/Work/go/src/runtime/malloc.go:721 +0x39
runtime.systemstack(0x0)
c:/Work/go/src/runtime/asm_386.s:464 +0x5e
runtime.mstart()
c:/Work/go/src/runtime/proc.go:1170
goroutine 1 [running]:
runtime.systemstack_switch()
c:/Work/go/src/runtime/asm_386.s:418 fp=0x1482a88c sp=0x1482a888 pc=0x44acc0
runtime.mallocgc(0x196151, 0x0, 0x0, 0x0)
c:/Work/go/src/runtime/malloc.go:720 +0x67b fp=0x1482a8e0 sp=0x1482a88c pc=0x40e72b
runtime.rawstring(0x196151, 0x0, 0x0, 0x0, 0x0, 0x0)
c:/Work/go/src/runtime/string.go:245 +0x56 fp=0x1482a8f4 sp=0x1482a8e0 pc=0x43c846
runtime.rawstringtmp(0x0, 0x196151, 0x0, 0x0, 0x0, 0x0, 0x0)
c:/Work/go/src/runtime/string.go:115 +0x51 fp=0x1482a910 sp=0x1482a8f4 pc=0x43c3b1
runtime.concatstrings(0x0, 0x1482a974, 0x2, 0x2, 0x0, 0x401a8f)
c:/Work/go/src/runtime/string.go:46 +0xc5 fp=0x1482a954 sp=0x1482a910 pc=0x43c015
runtime.concatstring2(0x0, 0x435b0000, 0x196148, 0x13458b51, 0x9, 0x131281d0, 0x6b6540)
c:/Work/go/src/runtime/string.go:55 +0x39 fp=0x1482a970 sp=0x1482a954 pc=0x43c179
go/constant.BinaryOp(0x6b6540, 0x131281d0, 0xc, 0x6b6540, 0x131281d8, 0x0, 0x0)
c:/Work/go/src/go/constant/value.go:1113 +0xac0 fp=0x1482aa90 sp=0x1482a970 pc=0x53f2a0
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x134c9f40, 0x6b5d30, 0x134c9f20, 0x6b5d10, 0x130030b0, 0xc)
c:/Work/go/src/go/types/expr.go:841 +0x3ea fp=0x1482aafc sp=0x1482aa90 pc=0x55358a
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f40, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482ae18 sp=0x1482aafc pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f40, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482ae70 sp=0x1482ae18 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f40)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482aea0 sp=0x1482ae70 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f40)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482aeb4 sp=0x1482aea0 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x134c9f60, 0x6b5d30, 0x134c9f40, 0x6b5d10, 0x130030c0, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482af20 sp=0x1482aeb4 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f60, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482b23c sp=0x1482af20 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f60, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482b294 sp=0x1482b23c pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f60)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482b2c4 sp=0x1482b294 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f60)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482b2d8 sp=0x1482b2c4 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x134c9f80, 0x6b5d30, 0x134c9f60, 0x6b5d10, 0x130030d0, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482b344 sp=0x1482b2d8 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f80, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482b660 sp=0x1482b344 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f80, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482b6b8 sp=0x1482b660 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f80)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482b6e8 sp=0x1482b6b8 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9f80)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482b6fc sp=0x1482b6e8 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x134c9fa0, 0x6b5d30, 0x134c9f80, 0x6b5d10, 0x130030e0, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482b768 sp=0x1482b6fc pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fa0, 0x0, 0x0, 0x40)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482ba84 sp=0x1482b768 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fa0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482badc sp=0x1482ba84 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fa0)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482bb0c sp=0x1482badc pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fa0)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482bb20 sp=0x1482bb0c pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x134c9fc0, 0x6b5d30, 0x134c9fa0, 0x6b5d10, 0x130030f0, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482bb8c sp=0x1482bb20 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fc0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482bea8 sp=0x1482bb8c pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fc0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482bf00 sp=0x1482bea8 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fc0)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482bf30 sp=0x1482bf00 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fc0)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482bf44 sp=0x1482bf30 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x134c9fe0, 0x6b5d30, 0x134c9fc0, 0x6b5d10, 0x13003100, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482bfb0 sp=0x1482bf44 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fe0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482c2cc sp=0x1482bfb0 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fe0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482c324 sp=0x1482c2cc pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fe0)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482c354 sp=0x1482c324 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x134c9fe0)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482c368 sp=0x1482c354 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e000, 0x6b5d30, 0x134c9fe0, 0x6b5d10, 0x13003110, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482c3d4 sp=0x1482c368 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e000, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482c6f0 sp=0x1482c3d4 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e000, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482c748 sp=0x1482c6f0 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e000)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482c778 sp=0x1482c748 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e000)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482c78c sp=0x1482c778 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e020, 0x6b5d30, 0x1313e000, 0x6b5d10, 0x13003120, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482c7f8 sp=0x1482c78c pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e020, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482cb14 sp=0x1482c7f8 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e020, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482cb6c sp=0x1482cb14 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e020)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482cb9c sp=0x1482cb6c pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e020)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482cbb0 sp=0x1482cb9c pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e040, 0x6b5d30, 0x1313e020, 0x6b5d10, 0x13003130, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482cc1c sp=0x1482cbb0 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e040, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482cf38 sp=0x1482cc1c pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e040, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482cf90 sp=0x1482cf38 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e040)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482cfc0 sp=0x1482cf90 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e040)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482cfd4 sp=0x1482cfc0 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e060, 0x6b5d30, 0x1313e040, 0x6b5d10, 0x13003140, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482d040 sp=0x1482cfd4 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e060, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482d35c sp=0x1482d040 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e060, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482d3b4 sp=0x1482d35c pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e060)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482d3e4 sp=0x1482d3b4 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e060)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482d3f8 sp=0x1482d3e4 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e080, 0x6b5d30, 0x1313e060, 0x6b5d10, 0x13003150, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482d464 sp=0x1482d3f8 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e080, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482d780 sp=0x1482d464 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e080, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482d7d8 sp=0x1482d780 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e080)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482d808 sp=0x1482d7d8 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e080)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482d81c sp=0x1482d808 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e0a0, 0x6b5d30, 0x1313e080, 0x6b5d10, 0x13003160, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482d888 sp=0x1482d81c pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0a0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482dba4 sp=0x1482d888 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0a0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482dbfc sp=0x1482dba4 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0a0)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482dc2c sp=0x1482dbfc pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0a0)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482dc40 sp=0x1482dc2c pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e0c0, 0x6b5d30, 0x1313e0a0, 0x6b5d10, 0x13003170, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482dcac sp=0x1482dc40 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0c0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482dfc8 sp=0x1482dcac pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0c0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482e020 sp=0x1482dfc8 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0c0)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482e050 sp=0x1482e020 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0c0)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482e064 sp=0x1482e050 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e0e0, 0x6b5d30, 0x1313e0c0, 0x6b5d10, 0x13003180, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482e0d0 sp=0x1482e064 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0e0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482e3ec sp=0x1482e0d0 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0e0, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482e444 sp=0x1482e3ec pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0e0)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482e474 sp=0x1482e444 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e0e0)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482e488 sp=0x1482e474 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e100, 0x6b5d30, 0x1313e0e0, 0x6b5d10, 0x13003190, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482e4f4 sp=0x1482e488 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e100, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482e810 sp=0x1482e4f4 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e100, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482e868 sp=0x1482e810 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e100)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482e898 sp=0x1482e868 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e100)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482e8ac sp=0x1482e898 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e120, 0x6b5d30, 0x1313e100, 0x6b5d10, 0x130031a0, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482e918 sp=0x1482e8ac pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e120, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482ec34 sp=0x1482e918 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e120, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482ec8c sp=0x1482ec34 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e120)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482ecbc sp=0x1482ec8c pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e120)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482ecd0 sp=0x1482ecbc pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e140, 0x6b5d30, 0x1313e120, 0x6b5d10, 0x130031b0, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482ed3c sp=0x1482ecd0 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e140, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482f058 sp=0x1482ed3c pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e140, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482f0b0 sp=0x1482f058 pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e140)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482f0e0 sp=0x1482f0b0 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e140)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482f0f4 sp=0x1482f0e0 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e160, 0x6b5d30, 0x1313e140, 0x6b5d10, 0x130031c0, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482f160 sp=0x1482f0f4 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e160, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482f47c sp=0x1482f160 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e160, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482f4d4 sp=0x1482f47c pc=0x55432d
go/types.(*Checker).multiExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e160)
c:/Work/go/src/go/types/expr.go:1549 +0x4d fp=0x1482f504 sp=0x1482f4d4 pc=0x557e2d
go/types.(*Checker).expr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e160)
c:/Work/go/src/go/types/expr.go:1543 +0x39 fp=0x1482f518 sp=0x1482f504 pc=0x557db9
go/types.(*Checker).binary(0x13055dc0, 0x1465eac0, 0x1313e180, 0x6b5d30, 0x1313e160, 0x6b5d10, 0x130031d0, 0xc)
c:/Work/go/src/go/types/expr.go:766 +0x53 fp=0x1482f584 sp=0x1482f518 pc=0x5531f3
go/types.(*Checker).exprInternal(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e180, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:1477 +0x191b fp=0x1482f8a0 sp=0x1482f584 pc=0x555eab
go/types.(*Checker).rawExpr(0x13055dc0, 0x1465eac0, 0x6b5d30, 0x1313e180, 0x0, 0x0, 0x0)
c:/Work/go/src/go/types/expr.go:969 +0x4d fp=0x1482f8f8 sp=0x1482f8a0 pc=0x55432d
...additional frames elided...
@karalabe, can you confirm that adding go test -vet=off
fixes it? I think it's the vet checker running in parallel with go test
that's consuming a lot of memory.
Confirmed, -vet=off
fixes my above repro.
So, I guess go/types is just memory hungry and that hurts on 386's small address space. Presumably we'd have the same problem on arm and other 32-bit platforms.
Optimizing go/types at this point seems too much too late. @griesemer, @alandonovan ... ?
Or is the GC failing us here? @aclements.
Maybe just detect this runtime error from vet and ignore it, as if vet didn't run? @ianlancetaylor, @rsc.
The particular error code is odd. 487 is ERROR_INVALID_ADDRESS, which is not what I'd expect if we just ran out of memory. @alexbrainman, any idea why VirtualAlloc(MEM_COMMIT) would return that, especially given that we must have just successfully called VirutalAlloc(MEM_RESERVE) for the same address, and the addresses all look totally reasonable (e.g., 0x43f20000)?
@karalabe, I wasn't able to make sense of the issue you linked to (ethereum/go-ethereum#15743), since the traceback appears incomplete. Why do think it's related?
@bradfitz Assuming it's not some other go/types unrelated issue, it would be interesting to see which exact code leads to the problem and if it's always the same. The following patch prints the location and operands before the code goes into go/constant.BinaryOp:
diff --git a/src/go/types/expr.go b/src/go/types/expr.go
index ea778fd188..c0237c73c8 100644
--- a/src/go/types/expr.go
+++ b/src/go/types/expr.go
@@ -838,6 +838,7 @@ func (check *Checker) binary(x *operand, e *ast.BinaryExpr, lhs, rhs ast.Expr, o
if op == token.QUO && isInteger(typ) {
op = token.QUO_ASSIGN
}
+ check.dump("%s: x = %s, y = %s, op = %d", x.pos(), x, &y, op)
x.val = constant.BinaryOp(xval, op, yval)
// Typed constants must be representable in
// their type after each constant operation.
It probably needs to be refined otherwise it prints too much, but it may be a starting point.
(I'm out through 1/1/18 but can try to help after that.)
The particular error code is odd. 487 is ERROR_INVALID_ADDRESS, which is not what I'd expect if we just ran out of memory. @alexbrainman, any idea why VirtualAlloc(MEM_COMMIT) would return that, especially given that we must have just successfully called VirutalAlloc(MEM_RESERVE) for the same address, and the addresses all look totally reasonable (e.g., 0x43f20000)?
I don't have good explanation for the error we see. I would insert println near every VirtualAlloc call to understand allocation pattern here - that might give some clue about what is happening. I am not near computer to try that now.
But I wouldn't spend much time trying to understand the reason for ERROR_INVALID_ADDRESS. This crash is happening on Linux too. So, like Brad said, I reckon we use too much memory for these environments.
Alex
Change https://golang.org/cl/85887 mentions this issue: runtime: use sparse mappings for the heap
TL;DR: For cmd/compile, this is a dup of #16394, which @mdempsky fixed in November (thanks!). For cmd/vet (really go/types), there is a new problem, for which I will file an issue and fix for Go 1.10. There is also a minor cmd/gofmt issue for Go 1.11, which I will file.
For the older releases I also sent a PR for go-bindata to emit balanced trees and also a PR to ethereum to use that go-bindata. Those are linked above and will fix the problems with older toolchains and ethereum. (Thanks @kevinburke and @karalabe.)
go get -u rsc.io/tmp/bigprog
is a simple test of how our tools handle long arithmetic expressions like 1 + 1 + 1 + 1 + ... + 1 or "1" + "1" + "1" + "1" + ... + "1", compared with balanced expressions like (("1" + "1") + ("1" + "1")), inspired by the problem in #23222, which involved a string concatenation of about 700 strings. To run it, also do go get -u golang.org/x/tools/cmd/gotype
.
The results on my 2015 Mac laptop, in both 64-bit and 32-bit mode, are below. This line:
1000 int 0.019s strbal 0.021s strbigbal 0.037s str 0.025s strbig 0.032s
means that a tool was run on five different programs each with a single expression containing 1000 addition operations.
The int
program is 1 + 1 + 1 + ... + 1.
The str
program (later in the line) is "1" + "1" + "1" + ... + "1".
The strbig
program is str
but each literal is actually 1000 1 characters: "111...1".
The strbal
and strbigbal
programs are str
and strbig
but add parentheses to make a balanced parse tree.
Note that the tables report strbal
and strbigbal
before str
and strbig
, because strbig
in particular is the worst case for many tools.
The compiler does very well, because Matthew fixed this in the parser to address #16394, in https://golang.org/cl/76450, during the Go 1.10 cycle. The reports of stack overflow in the Go 1.9.2 compiler are essentially dups of #16394, now fixed. Even before that change, the compiler needed stack to recurse over the whole expression but otherwise handled it efficiently, with a single allocation to construct the whole concatenation (I did that in 2014, mainly to speed program execution, but it had the effect of speeding compilation too (https://golang.org/cl/83090046)). With Matthew's fix, there's basically nothing left to do in the compiler.
The go/types package does not do as well, because it does not have the OADDSTR optimization in typecheck, nor in the parser. When go/constant builds up the actual value of the expression, it is accidentally quadratic on str
: it allocates "1", then "11", then "111", then "1111", and so on. Similarly for strbig
, with longer strings. On my Mac, a 32-bit gotype runs out of memory in a concatenation of 4000 1k strings (4MB total). On strbal
and strbigbal
it does better: the balanced tree makes it accidntally O(n log n). Luckily the go/constant API is well enough designed that the underlying representation can be changed to do the actual concatenation lazily, cutting it back to O(n) even on the unbalanced case. This is important to fix because the new automatic go vet
uses go/types. I will file a new issue and send a CL for that, for Go 1.10.
Finally gofmt. I ran gofmt originally as a control, thinking that comparing to gotype would let us see how much time was spent in typechecking (gotype minus gofmt). Unfortunately, gofmt itself seems to have some accidentally quadratic behavior in making its layout decisions. (I won't be surprised if the problem is in the code to decide whether to add spaces around operators, which would make it my fault, and if so, my apologies). I will file a Go 1.11 issue for gofmt.
1000 int 0.019s strbal 0.021s strbigbal 0.037s str 0.025s strbig 0.032s
2000 int 0.020s strbal 0.023s strbigbal 0.062s str 0.032s strbig 0.047s
4000 int 0.022s strbal 0.025s strbigbal 0.099s str 0.044s strbig 0.078s
8000 int 0.024s strbal 0.032s strbigbal 0.187s str 0.072s strbig 0.132s
16000 int 0.029s strbal 0.048s strbigbal 0.370s str 0.127s strbig 0.226s
32000 int 0.048s strbal 0.076s strbigbal 0.760s str 0.238s strbig 0.459s
64000 int 0.059s strbal 0.141s strbigbal 1.551s str 0.426s strbig 0.861s
128000 int 0.109s strbal 0.275s strbigbal 3.207s str 0.869s strbig 1.785s
256000 int 0.220s strbal 0.523s strbigbal 6.641s str stack! strbig 3.422s
1000 int 0.023s strbal 0.007s strbigbal 0.022s str 0.011s strbig 0.254s
2000 int 0.016s strbal 0.008s strbigbal 0.038s str 0.014s strbig 1.130s
4000 int 0.027s strbal 0.013s strbigbal 0.066s str 0.022s strbig 4.861s
8000 int 0.072s strbal 0.020s strbigbal 0.122s str 0.042s strbig 23.908s
16000 int 0.199s strbal 0.031s strbigbal 0.262s str 0.093s strbig sigkill!
32000 int 0.530s strbal 0.061s strbigbal 0.536s str 0.183s
64000 int 1.630s strbal 0.123s strbigbal 1.060s str 0.368s
128000 int 5.338s strbal 0.286s strbigbal 2.243s str 0.706s
256000 int 22.431s strbal 0.580s strbigbal 4.652s str 1.500s
1000 int 0.217s strbal 0.091s strbigbal 0.128s str 0.086s strbig 0.323s
2000 int 0.099s strbal 0.092s strbigbal 0.183s str 0.094s strbig 1.181s
4000 int 0.109s strbal 0.100s strbigbal 0.271s str 0.103s strbig 4.676s
8000 int 0.158s strbal 0.111s strbigbal 0.475s str 0.130s strbig 23.340s
16000 int 0.386s strbal 0.162s strbigbal 0.895s str 0.180s strbig sigkill!
32000 int 0.775s strbal 0.245s strbigbal 1.791s str 0.292s
64000 int 1.912s strbal 0.430s strbigbal 3.653s str 0.536s
128000 int 5.899s strbal 0.808s strbigbal 7.649s str 0.978s
256000 int 23.739s strbal 1.617s strbigbal 14.617s str stack!
1000 int 0.035s strbal 0.008s strbigbal 0.030s str 0.026s strbig 0.047s
2000 int 0.071s strbal 0.012s strbigbal 0.051s str 0.079s strbig 0.115s
4000 int 0.291s strbal 0.022s strbigbal 0.092s str 0.271s strbig 0.362s
8000 int 1.049s strbal 0.032s strbigbal 0.173s str 1.092s strbig 1.249s
16000 int 4.332s strbal 0.070s strbigbal 0.346s str 4.338s strbig 4.852s
32000 int 18.897s strbal 0.112s strbigbal 0.662s str 18.212s strbig 18.889s
64000 int 82.845s strbal 0.224s strbigbal 1.292s str 84.138s strbig 83.718s
128000 int 382.780s strbal 0.425s strbigbal 2.588s str 381.781s strbig 392.788s
1000 int 0.014s strbal 0.014s strbigbal 0.039s str 0.024s strbig 0.034s
2000 int 0.013s strbal 0.015s strbigbal 0.067s str 0.022s strbig 0.050s
4000 int 0.016s strbal 0.018s strbigbal 0.118s str 0.035s strbig 0.097s
8000 int 0.018s strbal 0.026s strbigbal 0.219s str 0.054s strbig 0.162s
16000 int 0.023s strbal 0.039s strbigbal 0.455s str 0.092s strbig 0.311s
32000 int 0.039s strbal 0.071s strbigbal 0.971s str 0.195s strbig 0.641s
64000 int 0.061s strbal 0.131s strbigbal 2.024s str 0.352s strbig 1.247s
128000 int 0.106s strbal 0.253s strbigbal 3.994s str stack! strbig 2.495s
256000 int 0.231s strbal 0.501s strbigbal mem! str stack! strbig 4.944s
1000 int 0.024s strbal 0.005s strbigbal 0.020s str 0.008s strbig 0.287s
2000 int 0.014s strbal 0.007s strbigbal 0.039s str 0.014s strbig 1.115s
4000 int 0.033s strbal 0.010s strbigbal 0.072s str 0.022s strbig mem!
8000 int 0.074s strbal 0.016s strbigbal 0.142s str 0.040s
16000 int 0.208s strbal 0.033s strbigbal 0.290s str 0.091s
32000 int 0.608s strbal 0.060s strbigbal 0.616s str 0.188s
64000 int 1.843s strbal 0.131s strbigbal 1.222s str 0.374s
128000 int stack! strbal 0.272s strbigbal 2.585s str stack!
256000 int stack! strbal 0.640s strbigbal mem! str stack!
1000 int 0.098s strbal 0.073s strbigbal 0.135s str 0.078s strbig 0.396s
2000 int 0.081s strbal 0.073s strbigbal 0.203s str 0.077s strbig 1.268s
4000 int 0.097s strbal 0.081s strbigbal 0.340s str 0.093s strbig mem!
8000 int 0.147s strbal 0.093s strbigbal 0.623s str 0.134s
16000 int 0.278s strbal 0.130s strbigbal 1.224s str 0.230s
32000 int 0.712s strbal 0.219s strbigbal 2.398s str 0.452s
64000 int 2.027s strbal 0.389s strbigbal 4.815s str 0.863s
128000 int stack! strbal 0.724s strbigbal 9.902s str stack!
256000 int stack! strbal 1.514s strbigbal mem! str stack!
1000 int 0.033s strbal 0.006s strbigbal 0.034s str 0.021s strbig 0.048s
2000 int 0.067s strbal 0.010s strbigbal 0.068s str 0.070s strbig 0.125s
4000 int 0.244s strbal 0.019s strbigbal 0.119s str 0.223s strbig 0.327s
8000 int 0.854s strbal 0.031s strbigbal 0.238s str 0.863s strbig 1.101s
16000 int 3.519s strbal 0.062s strbigbal 0.490s str 3.417s strbig 3.892s
32000 int 13.626s strbal 0.117s strbigbal 0.932s str 13.617s strbig 14.544s
64000 int 55.858s strbal 0.232s strbigbal 1.844s str 56.563s strbig 57.930s
128000 int 252.079s strbal 0.493s strbigbal 3.724s str 250.775s strbig 255.842s
256000 int stack! strbal 0.940s strbigbal 7.614s str stack!
Change https://golang.org/cl/86395 mentions this issue: go/constant: make string addition compute actual string lazily
The particular error code is odd. 487 is ERROR_INVALID_ADDRESS, which is not what I'd expect if we just ran out of memory. @alexbrainman, any idea why VirtualAlloc(MEM_COMMIT) would return that, especially given that we must have just successfully called VirutalAlloc(MEM_RESERVE) for the same address, and the addresses all look totally reasonable (e.g., 0x43f20000)?
@aclements the failure is at c:/go/src/runtime/mem_windows.go:124 so it is this call
stdcall4(_VirtualAlloc, uintptr(v), n, _MEM_COMMIT, _PAGE_READWRITE)
that failed. But according to VirtualAlloc documentation https://msdn.microsoft.com/en-us/library/windows/desktop/aa366887(v=vs.85).aspx: "Attempting to commit a specific address range by specifying MEM_COMMIT without MEM_RESERVE and a non-NULL lpAddress fails unless the entire range has already been reserved. The resulting error code is ERROR_INVALID_ADDRESS." Perhaps 0x43f20000 has never been reserved?
Alex
What version of Go are you using (
go version
)?go version go1.9.2 windows/386
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (
go env
)?What did you do?
We've noticed on our CI that 32bit Windows builds started crashing during compilation https://ci.appveyor.com/project/ethereum/go-ethereum/build/master.4791/job/hcsxkgy0uh018j05#L136.
After playing around with it trying to repro locally, we've managed to triage it to the 32bit Windows build of Go. To reproduce the issue yourself:
go get -v github.com/ethereum/go-ethereum/dashboard
The repository is quite large, so downloading it will take a while.
What did you expect to see?
A successful build.
What did you see instead?
Issue being tracked on the go-ethereum repo too: https://github.com/ethereum/go-ethereum/issues/15738.