I tried to play a bandcamp when my internet disconnected and as a result mog crashed after consuming significant CPU.
I am pasting the panic log here. This panic is thrown as the delay time of 10 seconds expires.
But before that there were > 5500 (5698) tries to play the song, which made my cpu usage to jump to 70%.
I think mog should gracefully handle no internet connection and throw some error in the front-end
panic: delay timer expired
goroutine 22780 [running]:
github.com/mjibson/mog/server.func·025()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:358 +0x64
created by time.goFunc
/usr/local/go/src/time/sleep.go:129 +0x4b
goroutine 1 [IO wait]:
net.(*pollDesc).Wait(0xc208010ca0, 0x72, 0x0, 0x0)
/usr/local/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208010ca0, 0x0, 0x0)
/usr/local/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc208010c40, 0x0, 0x4a28c88, 0xc20810d028)
/usr/local/go/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc208034828, 0x406725e, 0x0, 0x0)
/usr/local/go/src/net/tcpsock_posix.go:234 +0x4e
net/http.tcpKeepAliveListener.Accept(0xc208034828, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:1976 +0x4c
net/http.(*Server).Serve(0xc208064540, 0x4a2b898, 0xc208034828, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:1728 +0x92
net/http.(*Server).ListenAndServe(0xc208064540, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:1718 +0x154
net/http.ListenAndServe(0x44e7110, 0x5, 0x4a2a7d0, 0xc2080f22d0, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:1808 +0xba
github.com/mjibson/mog/server.(*Server).ListenAndServe(0xc208048700, 0x44e7110, 0x5, 0x0, 0x0, 0x0)
/Users/goutham/go/src/github.com/mjibson/mog/server/web.go:58 +0x1ea
github.com/mjibson/mog/server.ListenAndServe(0xc20808ce40, 0x19, 0x44e7110, 0x5, 0x0, 0x0, 0x0)
/Users/goutham/go/src/github.com/mjibson/mog/server/server.go:58 +0x2e6
main.main()
/Users/goutham/go/src/github.com/mjibson/mog/main.go:98 +0x97f
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1
goroutine 37 [IO wait]:
net.(*pollDesc).Wait(0xc20815e0d0, 0x72, 0x0, 0x0)
/usr/local/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc20815e0d0, 0x0, 0x0)
/usr/local/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc20815e070, 0xc2080e4000, 0x1000, 0x1000, 0x0, 0x4a28c88, 0xc2080d8198)
/usr/local/go/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080e6018, 0xc2080e4000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:121 +0xdc
net/http.(*liveSwitchReader).Read(0xc208066548, 0xc2080e4000, 0x1000, 0x1000, 0x1c0000c20814c460, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:214 +0xab
io.(*LimitedReader).Read(0xc208108020, 0xc2080e4000, 0x1000, 0x1000, 0x4a2a708, 0x0, 0x0)
/usr/local/go/src/io/io.go:408 +0xce
bufio.(*Reader).fill(0xc2080640c0)
/usr/local/go/src/bufio/bufio.go:97 +0x1ce
bufio.(*Reader).ReadSlice(0xc2080640c0, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:295 +0x257
bufio.(*Reader).ReadLine(0xc2080640c0, 0x0, 0x0, 0x0, 0xc207fe9d00, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:324 +0x62
net/textproto.(*Reader).readLineSlice(0xc208162090, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/textproto/reader.go:55 +0x9e
net/textproto.(*Reader).ReadLine(0xc208162090, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/textproto/reader.go:36 +0x4f
net/http.ReadRequest(0xc2080640c0, 0xc208032680, 0x0, 0x0)
/usr/local/go/src/net/http/request.go:598 +0xcb
net/http.(*conn).readRequest(0xc208066500, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:586 +0x26f
net/http.(*conn).serve(0xc208066500)
/usr/local/go/src/net/http/server.go:1162 +0x69e
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:1751 +0x35e
goroutine 7 [select]:
net/http.(*Transport).getConn(0xc2081362d0, 0xc208616b60, 0x0, 0xc208030870, 0x4, 0xc20833f300, 0x19, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/transport.go:525 +0x608
net/http.(*Transport).RoundTrip(0xc2081362d0, 0xc208616b60, 0x436dd40, 0x0, 0x0)
/usr/local/go/src/net/http/transport.go:228 +0x4d4
github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol.(*Transport).tries(0xc208066a00, 0xc208616b60, 0x2, 0x1, 0x0, 0x0)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol/httpcontrol.go:288 +0x256
github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol.(*Transport).tries(0xc208066a00, 0xc208616b60, 0x1, 0x1, 0x0, 0x0)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol/httpcontrol.go:313 +0x5c2
github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol.(*Transport).tries(0xc208066a00, 0xc208616b60, 0x0, 0x4a1be58, 0x0, 0x0)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol/httpcontrol.go:313 +0x5c2
github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol.(*Transport).RoundTrip(0xc208066a00, 0xc208616b60, 0xc20807bcb0, 0x0, 0x0)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol/httpcontrol.go:336 +0xa8
net/http.send(0xc208616b60, 0x4a292e8, 0xc208066a00, 0x85, 0x0, 0x0)
/usr/local/go/src/net/http/client.go:219 +0x4fc
net/http.(*Client).send(0xc20803bad0, 0xc208616b60, 0x85, 0x0, 0x0)
/usr/local/go/src/net/http/client.go:142 +0x15b
net/http.(*Client).doFollowingRedirects(0xc20803bad0, 0xc208616b60, 0x45e25a8, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/client.go:367 +0xb25
net/http.(*Client).Get(0xc20803bad0, 0xc208030870, 0x85, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/client.go:299 +0xba
net/http.Get(0xc208030870, 0x85, 0x2, 0x0, 0x0)
/usr/local/go/src/net/http/client.go:276 +0x50
github.com/mjibson/mog/protocol/bandcamp.func·001(0x0, 0x0, 0x2, 0x0, 0x0)
/Users/goutham/go/src/github.com/mjibson/mog/protocol/bandcamp/bandcamp.go:64 +0x195
github.com/mjibson/mog/codec/mpa.(*Song).Init(0xc2083404d0, 0x0, 0x0, 0x0, 0x0)
/Users/goutham/go/src/github.com/mjibson/mog/codec/mpa/mpa.go:50 +0xc9
github.com/mjibson/mog/codec/mpa.NewSong(0xc20833f0a0, 0xc20876d740, 0x0, 0x0)
/Users/goutham/go/src/github.com/mjibson/mog/codec/mpa/mpa.go:44 +0x83
github.com/mjibson/mog/protocol/bandcamp.(*Bandcamp).GetSong(0xc20808dce0, 0xc20878a85d, 0xa, 0x0, 0x0, 0x0, 0x0)
/Users/goutham/go/src/github.com/mjibson/mog/protocol/bandcamp/bandcamp.go:69 +0x2ba
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:166 +0x3cf
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
github.com/mjibson/mog/server.func·013()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:239 +0x11c
github.com/mjibson/mog/server.func·010()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:119 +0x106
github.com/mjibson/mog/server.func·012()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:170 +0x4ff
created by github.com/mjibson/mog/server.New
/Users/goutham/go/src/github.com/mjibson/mog/server/server.go:173 +0x536
goroutine 18 [chan send]:
github.com/mjibson/mog/server.func·026()
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:360 +0xf4
created by github.com/mjibson/mog/server.(*Server).audio
/Users/goutham/go/src/github.com/mjibson/mog/server/audio.go:363 +0xc72
goroutine 8 [chan receive]:
github.com/mjibson/mog/server.(*Server).WebSocket(0xc208048700, 0xc208136000)
/Users/goutham/go/src/github.com/mjibson/mog/server/websocket.go:102 +0xe5
github.com/mjibson/mog/server.*Server.WebSocket·fm(0xc208136000)
/Users/goutham/go/src/github.com/mjibson/mog/server/web.go:49 +0x31
github.com/mjibson/mog/_third_party/golang.org/x/net/websocket.Server.serveWebSocket(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45e2338, ...)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/golang.org/x/net/websocket/server.go:90 +0x292
github.com/mjibson/mog/_third_party/golang.org/x/net/websocket.Handler.ServeHTTP(0xc2080d8c90, 0x4a2ba50, 0xc208066640, 0xc208033860)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/golang.org/x/net/websocket/server.go:113 +0x8a
net/http.(*ServeMux).ServeHTTP(0xc2080f22d0, 0x4a2ba50, 0xc208066640, 0xc208033860)
/usr/local/go/src/net/http/server.go:1541 +0x17d
net/http.serverHandler.ServeHTTP(0xc208064540, 0x4a2ba50, 0xc208066640, 0xc208033860)
/usr/local/go/src/net/http/server.go:1703 +0x19a
net/http.(*conn).serve(0xc2081180a0)
/usr/local/go/src/net/http/server.go:1204 +0xb57
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:1751 +0x35e
goroutine 24 [IO wait]:
net.(*pollDesc).Wait(0xc2080d0060, 0x72, 0x0, 0x0)
/usr/local/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080d0060, 0x0, 0x0)
/usr/local/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080d0000, 0xc208088000, 0x1000, 0x1000, 0x0, 0x4a28c88, 0xc20810cb00)
/usr/local/go/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208146000, 0xc208088000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:121 +0xdc
net/http.(*liveSwitchReader).Read(0xc2081580e8, 0xc208088000, 0x1000, 0x1000, 0xc20816c020, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:214 +0xab
io.(*LimitedReader).Read(0xc20801e000, 0xc208088000, 0x1000, 0x1000, 0x4a2a708, 0x0, 0x0)
/usr/local/go/src/io/io.go:408 +0xce
bufio.(*Reader).fill(0xc2080e8120)
/usr/local/go/src/bufio/bufio.go:97 +0x1ce
bufio.(*Reader).ReadSlice(0xc2080e8120, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:295 +0x257
bufio.(*Reader).ReadLine(0xc2080e8120, 0x0, 0x0, 0x0, 0xc207ff5f00, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:324 +0x62
net/textproto.(*Reader).readLineSlice(0xc2080a0060, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/textproto/reader.go:55 +0x9e
net/textproto.(*Reader).ReadLine(0xc2080a0060, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/textproto/reader.go:36 +0x4f
net/http.ReadRequest(0xc2080e8120, 0xc20810a8f0, 0x0, 0x0)
/usr/local/go/src/net/http/request.go:598 +0xcb
net/http.(*conn).readRequest(0xc2081580a0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:586 +0x26f
net/http.(*conn).serve(0xc2081580a0)
/usr/local/go/src/net/http/server.go:1162 +0x69e
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:1751 +0x35e
goroutine 36 [IO wait]:
net.(*pollDesc).Wait(0xc20815e060, 0x72, 0x0, 0x0)
/usr/local/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc20815e060, 0x0, 0x0)
/usr/local/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc20815e000, 0xc2080ea000, 0x1000, 0x1000, 0x0, 0x4a28c88, 0xc2080d80e0)
/usr/local/go/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080e6010, 0xc2080ea000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:121 +0xdc
net/http.(*liveSwitchReader).Read(0xc208066b88, 0xc2080ea000, 0x1000, 0x1000, 0xc2081fe020, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:214 +0xab
io.(*LimitedReader).Read(0xc208108000, 0xc2080ea000, 0x1000, 0x1000, 0x4a2a708, 0x0, 0x0)
/usr/local/go/src/io/io.go:408 +0xce
bufio.(*Reader).fill(0xc208064060)
/usr/local/go/src/bufio/bufio.go:97 +0x1ce
bufio.(*Reader).ReadSlice(0xc208064060, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:295 +0x257
bufio.(*Reader).ReadLine(0xc208064060, 0x0, 0x0, 0x0, 0xc207ff7900, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:324 +0x62
net/textproto.(*Reader).readLineSlice(0xc208086030, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/textproto/reader.go:55 +0x9e
net/textproto.(*Reader).ReadLine(0xc208086030, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/textproto/reader.go:36 +0x4f
net/http.ReadRequest(0xc208064060, 0xc208032410, 0x0, 0x0)
/usr/local/go/src/net/http/request.go:598 +0xcb
net/http.(*conn).readRequest(0xc208066b40, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:586 +0x26f
net/http.(*conn).serve(0xc208066b40)
/usr/local/go/src/net/http/server.go:1162 +0x69e
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:1751 +0x35e
goroutine 11 [chan receive]:
github.com/mjibson/mog/server.(*Server).WebSocket(0xc208048700, 0xc208030c60)
/Users/goutham/go/src/github.com/mjibson/mog/server/websocket.go:102 +0xe5
github.com/mjibson/mog/server.*Server.WebSocket·fm(0xc208030c60)
/Users/goutham/go/src/github.com/mjibson/mog/server/web.go:49 +0x31
github.com/mjibson/mog/_third_party/golang.org/x/net/websocket.Server.serveWebSocket(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45e2338, ...)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/golang.org/x/net/websocket/server.go:90 +0x292
github.com/mjibson/mog/_third_party/golang.org/x/net/websocket.Handler.ServeHTTP(0xc2080d8c90, 0x4a2ba50, 0xc208118460, 0xc20810b520)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/golang.org/x/net/websocket/server.go:113 +0x8a
net/http.(*ServeMux).ServeHTTP(0xc2080f22d0, 0x4a2ba50, 0xc208118460, 0xc20810b520)
/usr/local/go/src/net/http/server.go:1541 +0x17d
net/http.serverHandler.ServeHTTP(0xc208064540, 0x4a2ba50, 0xc208118460, 0xc20810b520)
/usr/local/go/src/net/http/server.go:1703 +0x19a
net/http.(*conn).serve(0xc208118280)
/usr/local/go/src/net/http/server.go:1204 +0xb57
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:1751 +0x35e
goroutine 22866 [runnable, locked to thread]:
net._Cfunc_free(0x4c170d0)
/usr/local/go/src/net/:47 +0x45
net.cgoLookupIPCNAME(0xc20833f300, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a35b70, 0xc208763f00, 0x1)
/usr/local/go/src/net/cgo_unix.go:116 +0x32c
net.cgoLookupIP(0xc20833f300, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40104e9)
/usr/local/go/src/net/cgo_unix.go:148 +0x65
net.lookupIP(0xc20833f300, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/lookup_unix.go:64 +0x5f
net.func·025(0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/lookup.go:41 +0x55
net.(*singleflight).doCall(0x47f7350, 0xc2083664e0, 0xc20833f300, 0x16, 0xc2081af548)
/usr/local/go/src/net/singleflight.go:91 +0x2f
net.(*singleflight).Do(0x47f7350, 0xc20833f300, 0x16, 0xc2081af548, 0x0, 0x0, 0x0, 0x0, 0x4011818)
/usr/local/go/src/net/singleflight.go:61 +0x280
net.lookupIPMerge(0xc20833f300, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/lookup.go:42 +0xae
net.lookupIPDeadline(0xc20833f300, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/lookup.go:64 +0x12d
net.resolveInternetAddr(0x44f9af0, 0x3, 0xc20833f300, 0x19, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/usr/local/go/src/net/ipsock.go:285 +0x49b
net.resolveAddr(0x44f2a70, 0x4, 0x44f9af0, 0x3, 0xc20833f300, 0x19, 0x0, 0x0, 0x0, 0x0, ...)
/usr/local/go/src/net/dial.go:110 +0x378
net.(*Dialer).Dial(0xc208164f80, 0x44f9af0, 0x3, 0xc20833f300, 0x19, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/dial.go:158 +0xf6
net.*Dialer.Dial·fm(0x44f9af0, 0x3, 0xc20833f300, 0x19, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/transport.go:38 +0x79
net/http.(*Transport).dial(0xc2081362d0, 0x44f9af0, 0x3, 0xc20833f300, 0x19, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/transport.go:479 +0x84
net/http.(*Transport).dialConn(0xc2081362d0, 0x0, 0xc208030870, 0x4, 0xc20833f300, 0x19, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/transport.go:564 +0x1678
net/http.func·019()
/usr/local/go/src/net/http/transport.go:520 +0x42
created by net/http.(*Transport).getConn
/usr/local/go/src/net/http/transport.go:522 +0x335
goroutine 35 [IO wait]:
net.(*pollDesc).Wait(0xc20812e140, 0x72, 0x0, 0x0)
/usr/local/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc20812e140, 0x0, 0x0)
/usr/local/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc20812e0e0, 0xc2080b2000, 0x1000, 0x1000, 0x0, 0x4a28c88, 0xc20810d3c8)
/usr/local/go/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080e61d0, 0xc2080b2000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:121 +0xdc
net/http.(*liveSwitchReader).Read(0xc208066228, 0xc2080b2000, 0x1000, 0x1000, 0x2, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:214 +0xab
io.(*LimitedReader).Read(0xc2080ec000, 0xc2080b2000, 0x1000, 0x1000, 0x2, 0x0, 0x0)
/usr/local/go/src/io/io.go:408 +0xce
bufio.(*Reader).fill(0xc2080e9260)
/usr/local/go/src/bufio/bufio.go:97 +0x1ce
bufio.(*Reader).ReadSlice(0xc2080e9260, 0xc208083b0a, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:295 +0x257
bufio.(*Reader).ReadLine(0xc2080e9260, 0x0, 0x0, 0x0, 0xc20876a400, 0x0, 0x0)
/usr/local/go/src/bufio/bufio.go:324 +0x62
net/textproto.(*Reader).readLineSlice(0xc2080dec60, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/textproto/reader.go:55 +0x9e
net/textproto.(*Reader).ReadLine(0xc2080dec60, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/textproto/reader.go:36 +0x4f
net/http.ReadRequest(0xc2080e9260, 0xc2080328f0, 0x0, 0x0)
/usr/local/go/src/net/http/request.go:598 +0xcb
net/http.(*conn).readRequest(0xc2080661e0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:586 +0x26f
net/http.(*conn).serve(0xc2080661e0)
/usr/local/go/src/net/http/server.go:1162 +0x69e
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:1751 +0x35e
goroutine 26 [chan receive]:
github.com/mjibson/mog/server.(*Server).WebSocket(0xc208048700, 0xc208136120)
/Users/goutham/go/src/github.com/mjibson/mog/server/websocket.go:102 +0xe5
github.com/mjibson/mog/server.*Server.WebSocket·fm(0xc208136120)
/Users/goutham/go/src/github.com/mjibson/mog/server/web.go:49 +0x31
github.com/mjibson/mog/_third_party/golang.org/x/net/websocket.Server.serveWebSocket(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45e2338, ...)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/golang.org/x/net/websocket/server.go:90 +0x292
github.com/mjibson/mog/_third_party/golang.org/x/net/websocket.Handler.ServeHTTP(0xc2080d8c90, 0x4a2ba50, 0xc208158320, 0xc208032750)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/golang.org/x/net/websocket/server.go:113 +0x8a
net/http.(*ServeMux).ServeHTTP(0xc2080f22d0, 0x4a2ba50, 0xc208158320, 0xc208032750)
/usr/local/go/src/net/http/server.go:1541 +0x17d
net/http.serverHandler.ServeHTTP(0xc208064540, 0x4a2ba50, 0xc208158320, 0xc208032750)
/usr/local/go/src/net/http/server.go:1703 +0x19a
net/http.(*conn).serve(0xc2081581e0)
/usr/local/go/src/net/http/server.go:1204 +0xb57
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:1751 +0x35e
goroutine 82 [select]:
github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol.(*Transport).monitor(0xc208066a00)
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol/httpcontrol.go:249 +0x2a6
created by github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol.(*Transport).start
/Users/goutham/go/src/github.com/mjibson/mog/_third_party/github.com/facebookgo/httpcontrol/httpcontrol.go:230 +0x2c6