42wim / matterircd

Connect to your mattermost or slack using your IRC-client of choice.
MIT License
295 stars 60 forks source link

concurrent map panic #188

Closed purpleidea closed 6 years ago

purpleidea commented 6 years ago

I don't know what caused this one, but it happened with git master. Should be easy to follow if you know the code base. (Sorry I would normally write a patch, but I didn't dig into the code yet since I'm overcommitted with https://github.com/purpleidea/mgmt/ )

HTH

fatal error: concurrent map iteration and map write

goroutine 94 [running]:
runtime.throw(0x98330b, 0x26)
        /usr/lib/golang/src/runtime/panic.go:616 +0x81 fp=0xc4201453d8 sp=0xc4201453b8 pc=0x42afd1
runtime.mapiternext(0xc420145510)
        /usr/lib/golang/src/runtime/hashmap.go:747 +0x55c fp=0xc420145468 sp=0xc4201453d8 pc=0x40a20c
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*channel).Join(0xc420745b00, 0xc420719180, 0x10, 0xc420145638)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/channel.go:303 +0x34e fp=0xc420145580 sp=0xc420145468 pc=0x83b9ce
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).addSlackUserToChannel(0xc420b45040, 0xc420658400, 0xc420a0af68, 0x8, 0xc420017970, 0x9)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:121 +0x31a fp=0xc420145698 sp=0xc420145580 pc=0x853e6a
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).syncSlackChannel(0xc420b45040, 0xc420017970, 0x9, 0xc420017979, 0x7)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:362 +0x244 fp=0xc420145788 sp=0xc420145698 pc=0x855f24
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).addSlackUserToChannelWorker(0xc420b45040, 0xc42006e1e0, 0xc420136720)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:182 +0x3f8 fp=0xc420145fc8 sp=0xc420145788 pc=0x854bf8
runtime.goexit()
        /usr/lib/golang/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc420145fd0 sp=0xc420145fc8 pc=0x456971
created by github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).addSlackUsersToChannels
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:146 +0x40a

goroutine 1 [select (no cases)]:
main.main()
        /home/james/code/gopath/src/github.com/42wim/matterircd/main.go:100 +0xafe

goroutine 20 [chan receive]:
github.com/42wim/matterircd/vendor/github.com/mattermost/platform/vendor/github.com/alecthomas/log4go.(*ConsoleLogWriter).run(0xc42010c280, 0x9d4ee0, 0xc420098008)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/mattermost/platform/vendor/github.com/alecthomas/log4go/termlog.go:33 +0x10c
created by github.com/42wim/matterircd/vendor/github.com/mattermost/platform/vendor/github.com/alecthomas/log4go.NewConsoleLogWriter
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/mattermost/platform/vendor/github.com/alecthomas/log4go/termlog.go:26 +0xbf

goroutine 21 [IO wait]:
internal/poll.runtime_pollWait(0x7fe70bae2f00, 0x72, 0x0)
        /usr/lib/golang/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42013c818, 0x72, 0xc42009c000, 0x0, 0x0)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42013c818, 0xffffffffffffff00, 0x0, 0x0)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Accept(0xc42013c800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/internal/poll/fd_unix.go:372 +0x1a8
net.(*netFD).accept(0xc42013c800, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc420098100, 0x412058, 0x10, 0x8e7c20)
        /usr/lib/golang/src/net/tcpsock_posix.go:136 +0x2e
net.(*TCPListener).Accept(0xc420098100, 0xc42034c570, 0x9da560, 0xc42000e028, 0xc42007fbd0)
        /usr/lib/golang/src/net/tcpsock.go:259 +0x49
main.start(0x9d8200, 0xc420098100)
        /home/james/code/gopath/src/github.com/42wim/matterircd/main.go:121 +0x78
main.main.func2()
        /home/james/code/gopath/src/github.com/42wim/matterircd/main.go:97 +0x1ed
created by main.main
        /home/james/code/gopath/src/github.com/42wim/matterircd/main.go:90 +0x7d2

goroutine 23 [select]:
github.com/42wim/matterircd/vendor/github.com/nlopes/slack.(*RTM).handleEvents(0xc4200daf20, 0xc420071140, 0x6fc23ac00)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/nlopes/slack/websocket_managed_conn.go:186 +0x21c
github.com/42wim/matterircd/vendor/github.com/nlopes/slack.(*RTM).ManageConnection(0xc4200daf20)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/nlopes/slack/websocket_managed_conn.go:57 +0x277
created by github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).loginToSlack
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:31 +0x14f

goroutine 52 [IO wait]:
internal/poll.runtime_pollWait(0x7fe70bae2e30, 0x72, 0xc4201edb60)
        /usr/lib/golang/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42013c898, 0x72, 0xffffffffffffff00, 0x9d5a80, 0xc124f8)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42013c898, 0xc4201d1000, 0x1000, 0x1000)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42013c880, 0xc4201d1000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42013c880, 0xc4201d1000, 0x1000, 0x1000, 0xc4201edcd0, 0x4e7457, 0xc4200b6000)
        /usr/lib/golang/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420098108, 0xc4201d1000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/net/net.go:176 +0x6a
bufio.(*Reader).fill(0xc42006e9c0)
        /usr/lib/golang/src/bufio/bufio.go:100 +0x11e
bufio.(*Reader).ReadSlice(0xc42006e9c0, 0x8b250a, 0x1, 0x1, 0xc4201e03e0, 0x4132fc, 0x7fe70baf0198)
        /usr/lib/golang/src/bufio/bufio.go:341 +0x2c
bufio.(*Reader).ReadBytes(0xc42006e9c0, 0xc42044200a, 0x8, 0x10, 0xc4201e03f0, 0x0, 0xc420036c00)
        /usr/lib/golang/src/bufio/bufio.go:419 +0x6b
bufio.(*Reader).ReadString(0xc42006e9c0, 0xc420816d0a, 0x12, 0xc4201ede88, 0x40f73a, 0xc4201edf08)
        /usr/lib/golang/src/bufio/bufio.go:459 +0x38
github.com/42wim/matterircd/vendor/github.com/sorcix/irc.(*Decoder).Decode(0xc42010cca0, 0x0, 0x0, 0x0)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/sorcix/irc/stream.go:80 +0x50
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).Decode(0xc4200dd900, 0xc4201e0400, 0xc42008b790, 0xc4200dd900)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/user.go:142 +0x57
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*server).handle(0xc42008b790, 0xc4200dd900)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/server.go:363 +0x91
created by github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*server).Connect
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/server.go:275 +0xaa

goroutine 12 [IO wait]:
internal/poll.runtime_pollWait(0x7fe70bae2c90, 0x72, 0xc4200478b0)
        /usr/lib/golang/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420214618, 0x72, 0xffffffffffffff00, 0x9d5a80, 0xc124f8)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420214618, 0xc420445c00, 0x400, 0x400)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420214600, 0xc420445c00, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420214600, 0xc420445c00, 0x400, 0x400, 0x20, 0xc420816f20, 0x0)
        /usr/lib/golang/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42000e060, 0xc420445c00, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/net/net.go:176 +0x6a
crypto/tls.(*block).readFromUntil(0xc42020f3b0, 0x7fe70baeb460, 0xc42000e060, 0x5, 0xc42000e060, 0xc420222280)
        /usr/lib/golang/src/crypto/tls/conn.go:493 +0x96
crypto/tls.(*Conn).readRecord(0xc420240380, 0x994d17, 0xc4202404a0, 0x100000000000000)
        /usr/lib/golang/src/crypto/tls/conn.go:595 +0xe0
crypto/tls.(*Conn).Read(0xc420240380, 0xc42016d000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/crypto/tls/conn.go:1156 +0x100
bufio.(*Reader).fill(0xc420136a20)
        /usr/lib/golang/src/bufio/bufio.go:100 +0x11e
bufio.(*Reader).Peek(0xc420136a20, 0x2, 0x8, 0x0, 0xc42099d190, 0xc420047d08, 0x60f1ea)
        /usr/lib/golang/src/bufio/bufio.go:132 +0x3a
github.com/42wim/matterircd/vendor/github.com/gorilla/websocket.(*Conn).read(0xc420212280, 0x2, 0x0, 0xc420047d30, 0x5ff9a8, 0xc420222228, 0x3)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/gorilla/websocket/conn_read.go:12 +0x40
github.com/42wim/matterircd/vendor/github.com/gorilla/websocket.(*Conn).advanceFrame(0xc420212280, 0x0, 0x0, 0x8)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/gorilla/websocket/conn.go:779 +0x5c
github.com/42wim/matterircd/vendor/github.com/gorilla/websocket.(*Conn).NextReader(0xc420212280, 0x451280, 0xc420070300, 0xc420047ec0, 0xc420047ec0, 0x412058)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/gorilla/websocket/conn.go:939 +0xa3
github.com/42wim/matterircd/vendor/github.com/gorilla/websocket.(*Conn).ReadJSON(0xc420212280, 0x8e36e0, 0xc42037e460, 0x2, 0xc420816f40)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/gorilla/websocket/json.go:50 +0x2f
github.com/42wim/matterircd/vendor/github.com/nlopes/slack.(*RTM).receiveIncomingEvent(0xc4200daf20)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/nlopes/slack/websocket_managed_conn.go:292 +0xa1
github.com/42wim/matterircd/vendor/github.com/nlopes/slack.(*RTM).handleIncomingEvents(0xc4200daf20, 0xc420071140)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/nlopes/slack/websocket_managed_conn.go:227 +0x2d
created by github.com/42wim/matterircd/vendor/github.com/nlopes/slack.(*RTM).ManageConnection
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/nlopes/slack/websocket_managed_conn.go:54 +0x24d

goroutine 28 [IO wait]:
internal/poll.runtime_pollWait(0x7fe70bae2d60, 0x72, 0xc42027a858)
        /usr/lib/golang/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420214418, 0x72, 0xffffffffffffff00, 0x9d5a80, 0xc124f8)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420214418, 0xc4202a6000, 0x8000, 0x8000)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420214400, 0xc4202a6000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420214400, 0xc4202a6000, 0x8000, 0x8000, 0x8, 0x8, 0x7ff3)
        /usr/lib/golang/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42000e048, 0xc4202a6000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/net/net.go:176 +0x6a
crypto/tls.(*block).readFromUntil(0xc42020a120, 0x7fe70baeb460, 0xc42000e048, 0x5, 0xc42000e048, 0x0)
        /usr/lib/golang/src/crypto/tls/conn.go:493 +0x96
crypto/tls.(*Conn).readRecord(0xc420240000, 0x994d17, 0xc420240120, 0x0)
        /usr/lib/golang/src/crypto/tls/conn.go:595 +0xe0
crypto/tls.(*Conn).Read(0xc420240000, 0xc42023f000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/crypto/tls/conn.go:1156 +0x100
bufio.(*Reader).Read(0xc42006e360, 0xc420186118, 0x9, 0x9, 0xc42027ac50, 0x46a2c3, 0xc42027ac60)
        /usr/lib/golang/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0x9d4520, 0xc42006e360, 0xc420186118, 0x9, 0x9, 0x9, 0xc4201e0d01, 0xc42027ad00, 0x6751cb)
        /usr/lib/golang/src/io/io.go:309 +0x86
io.ReadFull(0x9d4520, 0xc42006e360, 0xc420186118, 0x9, 0x9, 0xc42007e050, 0xc42027ad30, 0x6750dd)
        /usr/lib/golang/src/io/io.go:327 +0x58
net/http.http2readFrameHeader(0xc420186118, 0x9, 0x9, 0x9d4520, 0xc42006e360, 0x0, 0x0, 0xc4209beb10, 0x0)
        /usr/lib/golang/src/net/http/h2_bundle.go:1517 +0x7b
net/http.(*http2Framer).ReadFrame(0xc4201860e0, 0xc4209beb10, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/net/http/h2_bundle.go:1775 +0xa4
net/http.(*http2clientConnReadLoop).run(0xc42027afb8, 0x994818, 0xc4200337b8)
        /usr/lib/golang/src/net/http/h2_bundle.go:8028 +0x90
net/http.(*http2ClientConn).readLoop(0xc420425a40)
        /usr/lib/golang/src/net/http/h2_bundle.go:7956 +0x68
created by net/http.(*http2Transport).newClientConn
        /usr/lib/golang/src/net/http/h2_bundle.go:7143 +0x65c

goroutine 84 [select]:
github.com/42wim/matterircd/vendor/github.com/nlopes/slack.(*RTM).handleEvents(0xc420218160, 0xc42096c9c0, 0x6fc23ac00)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/nlopes/slack/websocket_managed_conn.go:186 +0x21c
github.com/42wim/matterircd/vendor/github.com/nlopes/slack.(*RTM).ManageConnection(0xc420218160)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/nlopes/slack/websocket_managed_conn.go:57 +0x277
created by github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).loginToSlack
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:31 +0x14f

goroutine 13 [chan receive]:
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).handleSlack(0xc4200dd900)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:206 +0x4e
created by github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).loginToSlack
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:76 +0x44c

goroutine 86 [chan receive]:
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).handleSlack(0xc420b45040)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:206 +0x4e
created by github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).loginToSlack
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:76 +0x44c

goroutine 103 [IO wait]:
internal/poll.runtime_pollWait(0x7fe70bae2bc0, 0x72, 0xc42027cb60)
        /usr/lib/golang/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42013c098, 0x72, 0xffffffffffffff00, 0x9d5a80, 0xc124f8)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42013c098, 0xc4203fb000, 0x1000, 0x1000)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42013c080, 0xc4203fb000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42013c080, 0xc4203fb000, 0x1000, 0x1000, 0xc42027ccd0, 0x4e7457, 0xc4202100c0)
        /usr/lib/golang/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42000e028, 0xc4203fb000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/net/net.go:176 +0x6a
bufio.(*Reader).fill(0xc4201362a0)
        /usr/lib/golang/src/bufio/bufio.go:100 +0x11e
bufio.(*Reader).ReadSlice(0xc4201362a0, 0xc4201f2d0a, 0x8, 0x96cad8, 0x1, 0x6, 0x2)
        /usr/lib/golang/src/bufio/bufio.go:341 +0x2c
bufio.(*Reader).ReadBytes(0xc4201362a0, 0xc42033e50a, 0x8, 0x10, 0xc4201e0810, 0x0, 0xc420036c00)
        /usr/lib/golang/src/bufio/bufio.go:419 +0x6b
bufio.(*Reader).ReadString(0xc4201362a0, 0xc42041990a, 0x10, 0xc42027ce88, 0x40f73a, 0xc42027cf08)
        /usr/lib/golang/src/bufio/bufio.go:459 +0x38
github.com/42wim/matterircd/vendor/github.com/sorcix/irc.(*Decoder).Decode(0xc4203721a0, 0x0, 0x0, 0x0)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/sorcix/irc/stream.go:80 +0x50
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).Decode(0xc420b45040, 0xc4201e0820, 0xc42008a680, 0xc420b45040)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/user.go:142 +0x57
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*server).handle(0xc42008a680, 0xc420b45040)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/server.go:363 +0x91
created by github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*server).Connect
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/server.go:275 +0xaa

goroutine 99 [IO wait]:
internal/poll.runtime_pollWait(0x7fe70bae2a20, 0x72, 0xc4200468b0)
        /usr/lib/golang/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420214798, 0x72, 0xffffffffffffff00, 0x9d5a80, 0xc124f8)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420214798, 0xc42056c800, 0x400, 0x400)
        /usr/lib/golang/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420214780, 0xc42056c800, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420214780, 0xc42056c800, 0x400, 0x400, 0x20, 0xc42029d640, 0x0)
        /usr/lib/golang/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420098170, 0xc42056c800, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/net/net.go:176 +0x6a
crypto/tls.(*block).readFromUntil(0xc420572f60, 0x7fe70baeb460, 0xc420098170, 0x5, 0xc420098170, 0xc420222460)
        /usr/lib/golang/src/crypto/tls/conn.go:493 +0x96
crypto/tls.(*Conn).readRecord(0xc420240a80, 0x994d17, 0xc420240ba0, 0x100000000000000)
        /usr/lib/golang/src/crypto/tls/conn.go:595 +0xe0
crypto/tls.(*Conn).Read(0xc420240a80, 0xc420986000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/lib/golang/src/crypto/tls/conn.go:1156 +0x100
bufio.(*Reader).fill(0xc42006f380)
        /usr/lib/golang/src/bufio/bufio.go:100 +0x11e
bufio.(*Reader).Peek(0xc42006f380, 0x2, 0x8, 0x0, 0xc420560c60, 0xc420046d08, 0x60f1ea)
        /usr/lib/golang/src/bufio/bufio.go:132 +0x3a
github.com/42wim/matterircd/vendor/github.com/gorilla/websocket.(*Conn).read(0xc42057e500, 0x2, 0x0, 0xc420046d30, 0x5ff9a8, 0xc420222408, 0x3)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/gorilla/websocket/conn_read.go:12 +0x40
github.com/42wim/matterircd/vendor/github.com/gorilla/websocket.(*Conn).advanceFrame(0xc42057e500, 0x0, 0x0, 0x8)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/gorilla/websocket/conn.go:779 +0x5c
github.com/42wim/matterircd/vendor/github.com/gorilla/websocket.(*Conn).NextReader(0xc42057e500, 0x451280, 0xc420978360, 0xc420046ec0, 0xc420046ec0, 0x412058)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/gorilla/websocket/conn.go:939 +0xa3
github.com/42wim/matterircd/vendor/github.com/gorilla/websocket.(*Conn).ReadJSON(0xc42057e500, 0x8e36e0, 0xc42010d240, 0x2, 0xc42029d6a0)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/gorilla/websocket/json.go:50 +0x2f
github.com/42wim/matterircd/vendor/github.com/nlopes/slack.(*RTM).receiveIncomingEvent(0xc420218160)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/nlopes/slack/websocket_managed_conn.go:292 +0xa1
github.com/42wim/matterircd/vendor/github.com/nlopes/slack.(*RTM).handleIncomingEvents(0xc420218160, 0xc42096c9c0)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/nlopes/slack/websocket_managed_conn.go:227 +0x2d
created by github.com/42wim/matterircd/vendor/github.com/nlopes/slack.(*RTM).ManageConnection
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/nlopes/slack/websocket_managed_conn.go:54 +0x24d

goroutine 105 [runnable]:
sort.(*StringSlice).Less(0xc420088180, 0x1d, 0x1b, 0x1)
        <autogenerated>:1 +0xb2
sort.doPivot(0x9d8680, 0xc420088180, 0x1b, 0x45, 0xb, 0x1b)
        /usr/lib/golang/src/sort/sort.go:117 +0xe8
sort.quickSort(0x9d8680, 0xc420088180, 0x1b, 0x45, 0xd)
        /usr/lib/golang/src/sort/sort.go:190 +0x8a
sort.Sort(0x9d8680, 0xc420088180)
        /usr/lib/golang/src/sort/sort.go:218 +0x79
sort.Strings(0xc42064a900, 0x45, 0x45)
        /usr/lib/golang/src/sort/sort.go:314 +0x6d
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*channel).Names(0xc420745b00, 0x8, 0xc420098480, 0x0)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/channel.go:355 +0x2c4
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*channel).SendNamesResponse(0xc420745b00, 0xc4206f32c0, 0x0, 0x0)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/channel.go:243 +0x40
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*channel).Join(0xc420745b00, 0xc4206f32c0, 0x10, 0xc420057ae0)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/channel.go:320 +0x3f4
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).addSlackUserToChannel(0xc420b45040, 0xc42065a600, 0xc42061e380, 0x8, 0xc4203b76f0, 0x9)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:121 +0x31a
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).syncSlackChannel(0xc420b45040, 0xc4203b76f0, 0x9, 0xc420977f20, 0x7)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/slackuser.go:362 +0x244
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*User).(github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.syncSlackChannel)-fm(0xc4203b76f0, 0x9, 0xc420977f20, 0x7)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/server_commands.go:177 +0x52
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.CmdJoin(0x9dc140, 0xc42008a680, 0xc420b45040, 0xc42009a320, 0xc42039ce20, 0x5f76656420617901)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/server_commands.go:181 +0x280
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.commands.Run(0xc420b38de0, 0x9dc140, 0xc42008a680, 0xc420b45040, 0xc42009a320, 0x0, 0x767261636f747567)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/commands.go:51 +0x1e3
github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*server).handle.func1(0xc42008a680, 0xc420b45040, 0xc42009a320, 0xc4201e05d0)
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/server.go:374 +0x7a
created by github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit.(*server).handle
        /home/james/code/gopath/src/github.com/42wim/matterircd/vendor/github.com/42wim/mm-go-irckit/server.go:373 +0x107