You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our VNC client written in Go (github.com/openai/go-vncdriver) linked into a Python program using CGO, crashes occasionally (on the order of once every 200 hours of CPU time) when allocating more stack.
It can't seem to print the backtrace since it died in stack reallocation. The goroutine in question (19) sits in a small loop where the backtrace usually looks like this:
#1 0x00007f8598781140 in runtime.netpollblock (pd=0x7f8514288078, mode=114, waitio=false, ~r3=121) at /usr/lib/go-1.6/src/runtime/netpoll.go:341
#2 0x00007f8598780602 in net.runtime_pollWait (pd=0x7f8514288078, mode=114, ~r2=859593999432) at /usr/lib/go-1.6/src/runtime/netpoll.go:160
#3 0x00007f859887bd0c in net.(*pollDesc).Wait (pd=0xc8200f0140, mode=114, ~r1=...) at /usr/lib/go-1.6/src/net/fd_poll_runtime.go:73
#4 0x00007f859887bd78 in net.(*pollDesc).WaitRead (pd=0xc8200f0140, ~r0=...) at /usr/lib/go-1.6/src/net/fd_poll_runtime.go:78
#5 0x00007f859887dbdc in net.(*netFD).Read (fd=0xc8200f00e0, p= []uint8 = {...}, n=0, err=...) at /usr/lib/go-1.6/src/net/fd_unix.go:250
#6 0x00007f8598891ed6 in net.(*conn).Read (c=0xc8200fe018, b= []uint8 = {...}, ~r1=0, ~r2=...) at /usr/lib/go-1.6/src/net/net.go:172
#7 0x00007f8598834d68 in io.ReadAtLeast (r=..., buf= []uint8 = {...}, min=1, n=0, err=...) at /usr/lib/go-1.6/src/io/io.go:297
#8 0x00007f8598834ea4 in io.ReadFull (r=..., buf= []uint8 = {...}, n=0, err=...) at /usr/lib/go-1.6/src/io/io.go:315
#9 0x00007f85988b67af in encoding/binary.Read (r=..., order=..., data=0x7f85975050a8, ~r3=...) at /usr/lib/go-1.6/src/encoding/binary/binary.go:152
#10 0x00007f8598825221 in github.com/openai/go-vncdriver/vncclient.(*ClientConn).mainLoop (c=0x0) at /experiment/go-vncdriver/.build/src/github.com/openai/go-vncdriver/vncclient/client.go:567
#11 0x00007f85987b58b1 in runtime.goexit () at /usr/lib/go-1.6/src/runtime/asm_amd64.s:1998
#12 0x000000c82010e000 in ?? ()
#13 0x0000000000000000 in ?? ()
What version of Go are you using (
go version
)?go version go1.6 linux/amd64
What operating system and processor architecture are you using (
go env
)?What did you do?
Our VNC client written in Go (github.com/openai/go-vncdriver) linked into a Python program using CGO, crashes occasionally (on the order of once every 200 hours of CPU time) when allocating more stack.
What did you expect to see?
No crash
What did you see instead?
Crash:
It can't seem to print the backtrace since it died in stack reallocation. The goroutine in question (19) sits in a small loop where the backtrace usually looks like this:
The goroutine's loop is here: https://github.com/openai/go-vncdriver/blob/master/vncclient/client.go#L565-L590. It doesn't recurse, so I wouldn't expect the stack to grow beyond a small limit.
The text was updated successfully, but these errors were encountered: