nsf/gocode

runtime: goroutine stack exceeds 1000000000-byte limit

Closed this issue · 4 comments

mfzl commented
runtime: goroutine stack exceeds 1000000000-byte limit
fatal error: stack overflow

runtime stack:
runtime.throw(0x891e06, 0xe)
	/User/Packages/go15/src/runtime/panic.go:619 +0x81
runtime.newstack()
	/User/Packages/go15/src/runtime/stack.go:1054 +0x71f
runtime.morestack()
	/User/Packages/go15/src/runtime/asm_amd64.s:480 +0x89

goroutine 266 [running]:
fmt.(*fmt).truncate(0xc42020a700, 0xc4200afd10, 0xf, 0xc4405403a0, 0x434f1c)
	/User/Packages/go15/src/fmt/format.go:312 +0xe1 fp=0xc440540350 sp=0xc440540348 pc=0x4c6891
fmt.(*fmt).fmt_s(0xc42020a700, 0xc4200afd10, 0xf)
	/User/Packages/go15/src/fmt/format.go:327 +0x3f fp=0xc440540388 sp=0xc440540350 pc=0x4c68df
fmt.(*pp).fmtString(0xc42020a6c0, 0xc4200afd10, 0xf, 0x73)
	/User/Packages/go15/src/fmt/print.go:440 +0x197 fp=0xc4405403c0 sp=0xc440540388 pc=0x4ca307
fmt.(*pp).printArg(0xc42020a6c0, 0x7e9540, 0xc4204876f0, 0x73)
	/User/Packages/go15/src/fmt/print.go:671 +0x789 fp=0xc440540438 sp=0xc4405403c0 pc=0x4cc1e9
fmt.(*pp).doPrintf(0xc42020a6c0, 0x890fa4, 0xd, 0xc440540658, 0x1, 0x1)
	/User/Packages/go15/src/fmt/print.go:1003 +0x157 fp=0xc440540520 sp=0xc440540438 pc=0x4cf3b7
fmt.Fprintf(0x8e2180, 0xc4200b2008, 0x890fa4, 0xd, 0xc440540658, 0x1, 0x1, 0x7e9540, 0xc420551401, 0xc4204876f0)
	/User/Packages/go15/src/fmt/print.go:188 +0x72 fp=0xc440540588 sp=0xc440540520 pc=0x4c85f2
fmt.Printf(0x890fa4, 0xd, 0xc440540658, 0x1, 0x1, 0x4c8702, 0x8e2180, 0xc4200b2008)
	/User/Packages/go15/src/fmt/print.go:197 +0x72 fp=0xc4405405e8 sp=0xc440540588 pc=0x4c8702
main.(*decl).find_child_and_in_embedded(0xc4203f0070, 0xc4200afd10, 0xf, 0x1)
	/User/.go/src/github.com/nsf/gocode/decl.go:1043 +0x179 fp=0xc440540678 sp=0xc4405405e8 pc=0x782dd9
main.(*decl).find_child_and_in_embedded(0xc4202c2070, 0xc4200afd10, 0xf, 0x1)
	/User/.go/src/github.com/nsf/gocode/decl.go:1044 +0x1a1 fp=0xc440540708 sp=0xc440540678 pc=0x782e01
main.(*decl).find_child_and_in_embedded(0xc4203f0070, 0xc4200afd10, 0xf, 0x1)
	/User/.go/src/github.com/nsf/gocode/decl.go:1044 +0x1a1 fp=0xc440540798 sp=0xc440540708 pc=0x782e01
main.(*decl).find_child_and_in_embedded(0xc4202c2070, 0xc4200afd10, 0xf, 0x1)
	/User/.go/src/github.com/nsf/gocode/decl.go:1044 +0x1a1 fp=0xc440540828 sp=0xc440540798 pc=0x782e01
	/User/.go/src/github.com/nsf/gocode/decl.go:1044 +0x1a1 fp=0xc440543a38 sp=0xc4405439a8 pc=0x782e01
<177 repeated lines removed>
...additional frames elided...
created by net/rpc.(*Server).ServeCodec
	/User/Packages/go15/src/net/rpc/server.go:480 +0x43a

goroutine 1 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7efd9d776e30, 0x72, 0xc4203cd678)
	/User/Packages/go15/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420194118, 0x72, 0xffffffffffffff00, 0x8e2d00, 0xab1658)
	/User/Packages/go15/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420194118, 0xc420219000, 0x1000, 0x1000)
	/User/Packages/go15/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420194100, 0xc420219000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/User/Packages/go15/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420194100, 0xc420219000, 0x1000, 0x1000, 0xc4201c4000, 0xc420255ce0, 0x7e33e0)
	/User/Packages/go15/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4200b2ac8, 0xc420219000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
	/User/Packages/go15/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc4200be960, 0xc420226000, 0x1, 0x9, 0xc4203cd860, 0x42bdf4, 0x8ab5d8)
	/User/Packages/go15/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0x8e17c0, 0xc4200be960, 0xc420226000, 0x1, 0x9, 0x1, 0x7e33e0, 0xc4203da3e0, 0x3)
	/User/Packages/go15/src/io/io.go:309 +0x86
io.ReadFull(0x8e17c0, 0xc4200be960, 0xc420226000, 0x1, 0x9, 0x100, 0x42bdf4, 0x8ab5d8)
	/User/Packages/go15/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0x8e17c0, 0xc4200be960, 0xc420226000, 0x9, 0x9, 0xc420556306, 0xc4203cd9e0, 0xc4203cd978, 0x42b4f9)
	/User/Packages/go15/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc4201c4000, 0xc4203cd990)
	/User/Packages/go15/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc4201c4000, 0x8ac600, 0xc4201c4000)
	/User/Packages/go15/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc4201c4000, 0x7da500, 0xc420206160, 0x16, 0x0, 0x0)
	/User/Packages/go15/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc4201c4000, 0x7da500, 0xc420206160, 0xc420206160, 0xc4201780c8)
	/User/Packages/go15/src/encoding/gob/decoder.go:187 +0x14f
net/rpc.(*gobServerCodec).ReadRequestHeader(0xc42038f620, 0xc420206160, 0x7d5f00, 0x7efd9d7d86c8)
	/User/Packages/go15/src/net/rpc/server.go:404 +0x45
net/rpc.(*Server).readRequestHeader(0xc4201780a0, 0x8e7cc0, 0xc42038f620, 0xc42024dae0, 0x16, 0xc42000ce80, 0x100000000000001, 0x0, 0x0)
	/User/Packages/go15/src/net/rpc/server.go:589 +0x67
net/rpc.(*Server).readRequest(0xc4201780a0, 0x8e7cc0, 0xc42038f620, 0xc4201780a0, 0xc420226010, 0xc420226020, 0xc420198200, 0xc42000ce80, 0x7d5d80, 0xc4203da340, ...)
	/User/Packages/go15/src/net/rpc/server.go:549 +0x5a
net/rpc.(*Server).ServeCodec(0xc4201780a0, 0x8e7cc0, 0xc42038f620)
	/User/Packages/go15/src/net/rpc/server.go:464 +0x97
net/rpc.(*Server).ServeConn(0xc4201780a0, 0x7efd9d732060, 0xc4200b2ac8)
	/User/Packages/go15/src/net/rpc/server.go:455 +0x181
net/rpc.ServeConn(0x7efd9d732060, 0xc4200b2ac8)
	/User/Packages/go15/src/net/rpc/server.go:671 +0x41
main.(*daemon).loop(0xc4201a6280)
	/User/.go/src/github.com/nsf/gocode/server.go:108 +0x215
main.do_server(0x0)
	/User/.go/src/github.com/nsf/gocode/server.go:46 +0x111
main.main()
	/User/.go/src/github.com/nsf/gocode/gocode.go:69 +0x69

goroutine 5 [chan receive, 1 minutes]:
main.new_file_reader.func1(0xc42000e040)
	/User/.go/src/github.com/nsf/gocode/utils.go:229 +0x71
created by main.new_file_reader
	/User/.go/src/github.com/nsf/gocode/utils.go:226 +0x88

goroutine 7 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7efd9d776f00, 0x72, 0x0)
	/User/Packages/go15/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420198098, 0x72, 0xc4200b6200, 0x0, 0x0)
	/User/Packages/go15/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420198098, 0xffffffffffffff00, 0x0, 0x0)
	/User/Packages/go15/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Accept(0xc420198080, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/User/Packages/go15/src/internal/poll/fd_unix.go:372 +0x1a8
net.(*netFD).accept(0xc420198080, 0xc4200b2ac8, 0x0, 0xc4200321d8)
	/User/Packages/go15/src/net/fd_unix.go:238 +0x42
net.(*UnixListener).accept(0xc4201768a0, 0xc420032180, 0xc420054fb0, 0x1)
	/User/Packages/go15/src/net/unixsock_posix.go:162 +0x32
net.(*UnixListener).Accept(0xc4201768a0, 0xc420054fb0, 0xc4200b2ac8, 0x0, 0x0)
	/User/Packages/go15/src/net/unixsock.go:253 +0x49
main.(*daemon).loop.func1(0xc4201a6280, 0xc420032180)
	/User/.go/src/github.com/nsf/gocode/server.go:93 +0x57
created by main.(*daemon).loop
	/User/.go/src/github.com/nsf/gocode/server.go:91 +0x7f

I'm getting the above stack trace in debug mode when using with deoplete-go

I've updated to latest gocode, removed all .a files and removed vendor directory just in case

nsf commented

If you can make me a small code example where it happens that'd be very helpful.

nsf commented

Ok, never mind, I've found a case which triggers this bug.

mfzl commented

Great, I was having trouble reproducing outside original repository (which I'm not allowed to share)

mfzl commented

That was fast! Thanks @nsf

It works