Closed fredzhou closed 4 years ago
go version go1.11.4 linux/amd64
part of the printout:
fredzhou@fredzhou-Ubuntu:~/go/src/github.com/ethereum/go-ethereum$ go-callvis "github.com/syncthing/syncthing/cmd/stcli" fatal error: runtime: out of memory runtime stack: runtime.throw(0x91d522, 0x16) /usr/local/go/src/runtime/panic.go:608 +0x72 runtime.sysMap(0xc014000000, 0x4000000, 0xcf2298) /usr/local/go/src/runtime/mem_linux.go:156 +0xc7 runtime.(*mheap).sysAlloc(0xcd8ea0, 0x4000000, 0x7f756002b260, 0x7f7561379d00) /usr/local/go/src/runtime/malloc.go:619 +0x1c7 runtime.(*mheap).grow(0xcd8ea0, 0xf7, 0x0) /usr/local/go/src/runtime/mheap.go:920 +0x42 runtime.(*mheap).allocSpanLocked(0xcd8ea0, 0xf7, 0xcf22a8, 0x20300100000000) /usr/local/go/src/runtime/mheap.go:848 +0x337 runtime.(*mheap).alloc_m(0xcd8ea0, 0xf7, 0x410100, 0x7f7560325400) /usr/local/go/src/runtime/mheap.go:692 +0x119 runtime.(*mheap).alloc.func1() /usr/local/go/src/runtime/mheap.go:759 +0x4c runtime.(*mheap).alloc(0xcd8ea0, 0xf7, 0x7f7561010100, 0x417675) /usr/local/go/src/runtime/mheap.go:758 +0x8a runtime.largeAlloc(0x1ede80, 0x450001, 0x7f75676d16c0) /usr/local/go/src/runtime/malloc.go:1019 +0x97 runtime.mallocgc.func1() /usr/local/go/src/runtime/malloc.go:914 +0x46 runtime.systemstack(0x0) /usr/local/go/src/runtime/asm_amd64.s:351 +0x66 runtime.mstart() /usr/local/go/src/runtime/proc.go:1229 goroutine 295 [running]: runtime.systemstack_switch() /usr/local/go/src/runtime/asm_amd64.s:311 fp=0xc00b2b49f8 sp=0xc00b2b49f0 pc=0x4567f0 runtime.mallocgc(0x1ede80, 0x8c56e0, 0x1, 0x0) /usr/local/go/src/runtime/malloc.go:913 +0x896 fp=0xc00b2b4a98 sp=0xc00b2b49f8 pc=0x40d7e6 runtime.newarray(0x8c56e0, 0x1108, 0x0) /usr/local/go/src/runtime/malloc.go:1048 +0x6a fp=0xc00b2b4ac8 sp=0xc00b2b4a98 pc=0x40dbba runtime.makeBucketArray(0x87ea80, 0x32f574628b75c50c, 0x0, 0x0, 0x0) /usr/local/go/src/runtime/map.go:355 +0x184 fp=0xc00b2b4b00 sp=0xc00b2b4ac8 pc=0x40ea84 runtime.hashGrow(0x87ea80, 0xc002d7e060) /usr/local/go/src/runtime/map.go:963 +0x89 fp=0xc00b2b4b50 sp=0xc00b2b4b00 pc=0x4102d9 runtime.mapassign(0x87ea80, 0xc002d7e060, 0xc00b2b4bf8, 0x0) /usr/local/go/src/runtime/map.go:623 +0x2af fp=0xc00b2b4bd8 sp=0xc00b2b4b50 pc=0x40f44f go/types.(*Checker).recordTypeAndValue(0xc00016d2c0, 0x99f440, 0xc003189920, 0xc003189907, 0x99d160, 0xc00b5e5bb0, 0x0, 0x0) /usr/local/go/src/go/types/check.go:292 +0x13c fp=0xc00b2b4c40 sp=0xc00b2b4bd8 pc=0x5b6cfc go/types.(*Checker).rawExpr(0xc00016d2c0, 0xc005af26c0, 0x99f440, 0xc003189920, 0x0, 0x0, 0x0) /usr/local/go/src/go/types/expr.go:993 +0x299 fp=0xc00b2b4ce0 sp=0xc00b2b4c40 pc=0x5c2a09 go/types.(*Checker).multiExpr(0xc00016d2c0, 0xc005af26c0, 0x99f440, 0xc003189920) /usr/local/go/src/go/types/expr.go:1575 +0x58 fp=0xc00b2b4d48 sp=0xc00b2b4ce0 pc=0x5c6c38 go/types.(*Checker).call.func1(0xc005af26c0, 0x0) /usr/local/go/src/go/types/call.go:65 +0x61 fp=0xc00b2b4d78 sp=0xc00b2b4d48 pc=0x5ed701 go/types.unpack(0xc00b2b4e70, 0x1, 0xc007f88000, 0xc0032adf40, 0xc00c702330, 0x1) /usr/local/go/src/go/types/call.go:181 +0x61 fp=0xc00b2b4de0 sp=0xc00b2b4d78 pc=0x5b4031 go/types.(*Checker).call(0xc00016d2c0, 0xc005af2680, 0xc0032b4480, 0x2) /usr/local/go/src/go/types/call.go:65 +0x36a fp=0xc00b2b4e98 sp=0xc00b2b4de0 pc=0x5b38ba go/types.(*Checker).exprInternal(0xc00016d2c0, 0xc005af2680, 0x99ec80, 0xc0032b4480, 0x0, 0x0, 0x7f75676d16c0) /usr/local/go/src/go/types/expr.go:1445 +0x1d0c fp=0xc00b2b5448 sp=0xc00b2b4e98 pc=0x5c47bc go/types.(*Checker).rawExpr(0xc00016d2c0, 0xc005af2680, 0x99ec80, 0xc0032b4480, 0x0, 0x0, 0x2) /usr/local/go/src/go/types/expr.go:969 +0x81 fp=0xc00b2b54e8 sp=0xc00b2b5448 pc=0x5c27f1 go/types.(*Checker).stmt(0xc00016d2c0, 0x0, 0x99eec0, 0xc0032a8a20) /usr/local/go/src/go/types/stmt.go:325 +0x40c5 fp=0xc00b2b5c48 sp=0xc00b2b54e8 pc=0x5e2ef5 go/types.(*Checker).stmtList(0xc00016d2c0, 0x0, 0xc003289800, 0xf, 0x10) /usr/local/go/src/go/types/stmt.go:120 +0xd6 fp=0xc00b2b5ca0 sp=0xc00b2b5c48 pc=0x5dd876 go/types.(*Checker).funcBody(0xc00016d2c0, 0xc0084d82a0, 0xc00328cde0, 0x3, 0xc0087460f0, 0xc0032b04b0, 0x0, 0x0) /usr/local/go/src/go/types/stmt.go:42 +0x1ea fp=0xc00b2b5d90 sp=0xc00b2b5ca0 pc=0x5dd1fa go/types.(*Checker).funcDecl.func1() /usr/local/go/src/go/types/decl.go:611 +0x67 fp=0xc00b2b5de0 sp=0xc00b2b5d90 pc=0x5edb57 go/types.(*Checker).processDelayed(0xc00016d2c0, 0x0) /usr/local/go/src/go/types/resolver.go:583 +0x33 fp=0xc00b2b5df0 sp=0xc00b2b5de0 pc=0x5d9143 go/types.(*Checker).checkFiles(0xc00016d2c0, 0xc002d7c120, 0xc, 0xc, 0x0, 0x0) /usr/local/go/src/go/types/check.go:252 +0xbc fp=0xc00b2b5e20 sp=0xc00b2b5df0 pc=0x5b6a1c go/types.(*Checker).Files(0xc00016d2c0, 0xc002d7c120, 0xc, 0xc, 0x1c, 0xc000b73d10) /usr/local/go/src/go/types/check.go:241 +0x49 fp=0xc00b2b5e60 sp=0xc00b2b5e20 pc=0x5b6939 github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader.(*importer).addFiles(0xc000099680, 0xc00048b130, 0xc002d7c120, 0xc, 0xc, 0x1) /home/fredzhou/go/src/github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader/loader.go:1022 +0x191 fp=0xc00b2b5f00 sp=0xc00b2b5e60 pc=0x603691 github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader.(*importer).load(0xc000099680, 0xc001467180, 0x0) /home/fredzhou/go/src/github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader/loader.go:981 +0x163 fp=0xc00b2b5fa0 sp=0xc00b2b5f00 pc=0x603433 github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader.(*importer).startLoad.func1(0xc000099680, 0xc001467180, 0xc002d7a4c0) /home/fredzhou/go/src/github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader/loader.go:962 +0x39 fp=0xc00b2b5fc8 sp=0xc00b2b5fa0 pc=0x604e59 runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc00b2b5fd0 sp=0xc00b2b5fc8 pc=0x4588d1 created by github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader.(*importer).startLoad /home/fredzhou/go/src/github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader/loader.go:961 +0x191 goroutine 1 [chan receive]: github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader.(*importInfo).awaitCompletion(...) /home/fredzhou/go/src/github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader/loader.go:447 github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader.(*importer).importAll(0xc000099680, 0x0, 0x0, 0xc00002a004, 0x35, 0xc000113ec0, 0x0, 0x0, 0x0, 0x0, ...) /home/fredzhou/go/src/github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader/loader.go:913 +0x406 github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader.(*Config).Load(0xc0000e0420, 0xc00009c010, 0x1, 0x1) /home/fredzhou/go/src/github.com/TrueFurby/go-callvis/vendor/golang.org/x/tools/go/loader/loader.go:521 +0x27f main.doAnalysis(0xcd3060, 0x0, 0xc00009c010, 0x1, 0x1) /home/fredzhou/go/src/github.com/TrueFurby/go-callvis/analysis.go:34 +0x17e main.main() /home/fredzhou/go/src/github.com/TrueFurby/go-callvis/main.go:80 +0x108
You just need more memory, some code produces very large callgraphs that requires a lot of memory to process.
can it swap some data to disk on the go?
go version go1.11.4 linux/amd64
part of the printout: