State tracking is REALLY racey
Closed this issue · 4 comments
If I run a client with state tracking enabled and GOMAXPROCS > 1, I get a lot of messages like this:
2013/05/23 09:01:37 state_handlers.go:167: WARN irc.352(): received WHO reply for unknown nick luz
Using the new race detector with go run -race main.go <opts>
shows lots of races:
==================
WARNING: DATA RACE
Read by goroutine 15:
github.com/neeee/goirc/client.(*Conn).h_433()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/handlers.go:72 +0x1a6
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 14:
github.com/neeee/goirc/state.(*stateTracker).ReNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:86 +0x154
github.com/neeee/goirc/client.(*Conn).h_433()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/handlers.go:74 +0x29c
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 15 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 14 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Read by goroutine 15:
runtime.mapaccess2_faststr()
/usr/lib/go/src/pkg/runtime/hashmap.c:473 +0x0
github.com/neeee/goirc/state.(*stateTracker).ReNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:84 +0x80
github.com/neeee/goirc/client.(*Conn).h_433()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/handlers.go:74 +0x29c
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 14:
runtime.mapdelete()
/usr/lib/go/src/pkg/runtime/hashmap.c:1307 +0x0
github.com/neeee/goirc/state.(*stateTracker).ReNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:87 +0x1c0
github.com/neeee/goirc/client.(*Conn).h_433()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/handlers.go:74 +0x29c
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 15 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 14 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Write by goroutine 19:
github.com/neeee/goirc/state.(*Nick).ParseModes()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/nick.go:106 +0x2ef
github.com/neeee/goirc/client.(*Conn).h_MODE()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:113 +0x56b
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 18:
github.com/neeee/goirc/state.(*Nick).ParseModes()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/nick.go:106 +0x2ef
github.com/neeee/goirc/client.(*Conn).h_MODE()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:113 +0x56b
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 19 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 18 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Write by goroutine 20:
runtime.mapassign1()
/usr/lib/go/src/pkg/runtime/hashmap.c:1289 +0x0
github.com/neeee/goirc/state.(*Nick).addChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/nick.go:71 +0xe3
github.com/neeee/goirc/state.(*stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:214 +0x3cd
github.com/neeee/goirc/client.(*Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:79 +0x590
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous read by goroutine 14:
runtime.mapiterinit()
/usr/lib/go/src/pkg/runtime/hashmap.c:1356 +0x0
github.com/neeee/goirc/state.(*stateTracker).ReNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:89 +0x259
github.com/neeee/goirc/client.(*Conn).h_433()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/handlers.go:74 +0x29c
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 20 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 14 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Read by goroutine 21:
runtime.mapaccess2_faststr()
/usr/lib/go/src/pkg/runtime/hashmap.c:473 +0x0
github.com/neeee/goirc/state.(*stateTracker).GetChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:148 +0x60
github.com/neeee/goirc/client.(*Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:193 +0xd7
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 20:
runtime.mapassign1()
/usr/lib/go/src/pkg/runtime/hashmap.c:1289 +0x0
github.com/neeee/goirc/state.(*stateTracker).NewChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:142 +0x315
github.com/neeee/goirc/client.(*Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:61 +0x3ac
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 21 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 20 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Read by goroutine 21:
github.com/neeee/goirc/client.(*Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:210 +0x35c
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 20:
github.com/neeee/goirc/state.(*stateTracker).NewChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:142 +0x1b2
github.com/neeee/goirc/client.(*Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:61 +0x3ac
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 21 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 20 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Read by goroutine 21:
github.com/neeee/goirc/state.(*Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:121 +0x3b
github.com/neeee/goirc/state.(*stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(*Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:213 +0x3f1
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 20:
github.com/neeee/goirc/state.(*stateTracker).NewChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:142 +0x1fe
github.com/neeee/goirc/client.(*Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:61 +0x3ac
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 21 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 20 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Read by goroutine 21:
runtime.mapaccess2_fast64()
/usr/lib/go/src/pkg/runtime/hashmap.c:235 +0x0
github.com/neeee/goirc/state.(*Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:121 +0x65
github.com/neeee/goirc/state.(*stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(*Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:213 +0x3f1
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 20:
runtime.mapassign1()
/usr/lib/go/src/pkg/runtime/hashmap.c:1289 +0x0
github.com/neeee/goirc/state.(*Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:122 +0xe3
github.com/neeee/goirc/state.(*stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(*Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:79 +0x590
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 21 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 20 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Read by goroutine 21:
github.com/neeee/goirc/state.(*Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:123 +0xfa
github.com/neeee/goirc/state.(*stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(*Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:213 +0x3f1
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 20:
github.com/neeee/goirc/state.(*stateTracker).NewChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:142 +0x1eb
github.com/neeee/goirc/client.(*Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:61 +0x3ac
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 21 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 20 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Write by goroutine 21:
runtime.mapassign1()
/usr/lib/go/src/pkg/runtime/hashmap.c:1289 +0x0
github.com/neeee/goirc/state.(*Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:123 +0x141
github.com/neeee/goirc/state.(*stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(*Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:213 +0x3f1
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 20:
runtime.mapassign1()
/usr/lib/go/src/pkg/runtime/hashmap.c:1289 +0x0
github.com/neeee/goirc/state.(*Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:123 +0x141
github.com/neeee/goirc/state.(*stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(*Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:79 +0x590
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 21 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 20 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Write by goroutine 25:
github.com/neeee/goirc/client.(*Conn).h_352()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:173 +0x274
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 21:
github.com/neeee/goirc/state.(*stateTracker).NewNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:69 +0x1cb
github.com/neeee/goirc/client.(*Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:208 +0x32d
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 25 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 21 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Write by goroutine 25:
github.com/neeee/goirc/client.(*Conn).h_352()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:174 +0x2fe
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 21:
github.com/neeee/goirc/state.(*stateTracker).NewNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:69 +0x1de
github.com/neeee/goirc/client.(*Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:208 +0x32d
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 25 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 21 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Write by goroutine 25:
github.com/neeee/goirc/client.(*Conn).h_352()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:179 +0x465
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 21:
github.com/neeee/goirc/state.(*stateTracker).NewNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:69 +0x1f1
github.com/neeee/goirc/client.(*Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:208 +0x32d
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 25 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 21 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
==================
WARNING: DATA RACE
Read by goroutine 25:
github.com/neeee/goirc/client.(*Conn).h_352()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:184 +0x638
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Previous write by goroutine 21:
github.com/neeee/goirc/state.(*stateTracker).NewNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:69 +0x204
github.com/neeee/goirc/client.(*Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:208 +0x32d
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 25 (running) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
Goroutine 21 (finished) created at:
github.com/neeee/goirc/client.(*hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(*Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f
==================
Hi Lucy,
The short answer is: I know :-/
I had a good chat with github.com/kballard/ about this, he's written
something that should be safer. I have been meaning to get to fixing this
all up, but life (and, uh, minecraft) keep getting in the way.
Sorry!
--alex
On 23 May 2013 00:09, "Lucy" notifications@github.com wrote:
If I run a client with state tracking enabled and GOMAXPROCS > 1, I get a
lot of messages like this:2013/05/23 09:01:37 state_handlers.go:167: WARN irc.352(): received WHO reply for unknown nick luz
Using the new race detector with go run -race main.go shows lots
of races:WARNING: DATA RACE
Read by goroutine 15:
github.com/neeee/goirc/client.(_Conn).h_433()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/handlers.go:72 +0x1a6
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 14:
github.com/neeee/goirc/state.(_stateTracker).ReNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:86 +0x154
github.com/neeee/goirc/client.(_Conn).h_433()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/handlers.go:74 +0x29c
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 15 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 14 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Read by goroutine 15:
runtime.mapaccess2_faststr()
/usr/lib/go/src/pkg/runtime/hashmap.c:473 +0x0
github.com/neeee/goirc/state.(_stateTracker).ReNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:84 +0x80
github.com/neeee/goirc/client.(_Conn).h_433()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/handlers.go:74 +0x29c
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 14:
runtime.mapdelete()
/usr/lib/go/src/pkg/runtime/hashmap.c:1307 +0x0
github.com/neeee/goirc/state.(_stateTracker).ReNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:87 +0x1c0
github.com/neeee/goirc/client.(_Conn).h_433()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/handlers.go:74 +0x29c
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 15 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 14 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Write by goroutine 19:
github.com/neeee/goirc/state.(_Nick).ParseModes()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/nick.go:106 +0x2ef
github.com/neeee/goirc/client.(_Conn).h_MODE()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:113 +0x56b
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 18:
github.com/neeee/goirc/state.(_Nick).ParseModes()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/nick.go:106 +0x2ef
github.com/neeee/goirc/client.(_Conn).h_MODE()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:113 +0x56b
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 19 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 18 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Write by goroutine 20:
runtime.mapassign1()
/usr/lib/go/src/pkg/runtime/hashmap.c:1289 +0x0
github.com/neeee/goirc/state.(_Nick).addChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/nick.go:71 +0xe3
github.com/neeee/goirc/state.(_stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:214 +0x3cd
github.com/neeee/goirc/client.(_Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:79 +0x590
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious read by goroutine 14:
runtime.mapiterinit()
/usr/lib/go/src/pkg/runtime/hashmap.c:1356 +0x0
github.com/neeee/goirc/state.(_stateTracker).ReNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:89 +0x259
github.com/neeee/goirc/client.(_Conn).h_433()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/handlers.go:74 +0x29c
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 20 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 14 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Read by goroutine 21:
runtime.mapaccess2_faststr()
/usr/lib/go/src/pkg/runtime/hashmap.c:473 +0x0
github.com/neeee/goirc/state.(_stateTracker).GetChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:148 +0x60
github.com/neeee/goirc/client.(_Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:193 +0xd7
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 20:
runtime.mapassign1()
/usr/lib/go/src/pkg/runtime/hashmap.c:1289 +0x0
github.com/neeee/goirc/state.(_stateTracker).NewChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:142 +0x315
github.com/neeee/goirc/client.(_Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:61 +0x3ac
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 21 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 20 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Read by goroutine 21:
github.com/neeee/goirc/client.(_Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:210 +0x35c
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 20:
github.com/neeee/goirc/state.(_stateTracker).NewChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:142 +0x1b2
github.com/neeee/goirc/client.(_Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:61 +0x3ac
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 21 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 20 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Read by goroutine 21:
github.com/neeee/goirc/state.(_Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:121 +0x3b
github.com/neeee/goirc/state.(_stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(_Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:213 +0x3f1
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 20:
github.com/neeee/goirc/state.(_stateTracker).NewChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:142 +0x1fe
github.com/neeee/goirc/client.(_Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:61 +0x3ac
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 21 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 20 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Read by goroutine 21:
runtime.mapaccess2_fast64()
/usr/lib/go/src/pkg/runtime/hashmap.c:235 +0x0
github.com/neeee/goirc/state.(_Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:121 +0x65
github.com/neeee/goirc/state.(_stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(_Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:213 +0x3f1
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 20:
runtime.mapassign1()
/usr/lib/go/src/pkg/runtime/hashmap.c:1289 +0x0
github.com/neeee/goirc/state.(_Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:122 +0xe3
github.com/neeee/goirc/state.(_stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(_Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:79 +0x590
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 21 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 20 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Read by goroutine 21:
github.com/neeee/goirc/state.(_Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:123 +0xfa
github.com/neeee/goirc/state.(_stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(_Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:213 +0x3f1
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 20:
github.com/neeee/goirc/state.(_stateTracker).NewChannel()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:142 +0x1eb
github.com/neeee/goirc/client.(_Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:61 +0x3ac
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 21 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 20 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Write by goroutine 21:
runtime.mapassign1()
/usr/lib/go/src/pkg/runtime/hashmap.c:1289 +0x0
github.com/neeee/goirc/state.(_Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:123 +0x141
github.com/neeee/goirc/state.(_stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(_Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:213 +0x3f1
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 20:
runtime.mapassign1()
/usr/lib/go/src/pkg/runtime/hashmap.c:1289 +0x0
github.com/neeee/goirc/state.(_Channel).addNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/channel.go:123 +0x141
github.com/neeee/goirc/state.(_stateTracker).Associate()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:213 +0x3a2
github.com/neeee/goirc/client.(_Conn).h_JOIN()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:79 +0x590
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 21 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 20 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Write by goroutine 25:
github.com/neeee/goirc/client.(_Conn).h_352()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:173 +0x274
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 21:
github.com/neeee/goirc/state.(_stateTracker).NewNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:69 +0x1cb
github.com/neeee/goirc/client.(_Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:208 +0x32d
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 25 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 21 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Write by goroutine 25:
github.com/neeee/goirc/client.(_Conn).h_352()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:174 +0x2fe
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 21:
github.com/neeee/goirc/state.(_stateTracker).NewNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:69 +0x1de
github.com/neeee/goirc/client.(_Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:208 +0x32d
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 25 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 21 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Write by goroutine 25:
github.com/neeee/goirc/client.(_Conn).h_352()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:179 +0x465
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 21:
github.com/neeee/goirc/state.(_stateTracker).NewNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:69 +0x1f1
github.com/neeee/goirc/client.(_Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:208 +0x32d
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 25 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 21 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fWARNING: DATA RACE
Read by goroutine 25:
github.com/neeee/goirc/client.(_Conn).h_352()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:184 +0x638
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(_hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fPrevious write by goroutine 21:
github.com/neeee/goirc/state.(_stateTracker).NewNick()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/state/tracker.go:69 +0x204
github.com/neeee/goirc/client.(_Conn).h_353()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/state_handlers.go:208 +0x32d
github.com/neeee/goirc/client.HandlerFunc.Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:24 +0x41
github.com/neeee/goirc/client.(*hNode).Handle()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:52 +0xb6
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 25 (running) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9fGoroutine 21 (finished) created at:
github.com/neeee/goirc/client.(_hSet).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:125 +0x171
github.com/neeee/goirc/client.(_Conn).dispatch()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/dispatch.go:144 +0x58
github.com/neeee/goirc/client.(*Conn).runLoop()
/home/lucy/src/go/pkg/src/github.com/neeee/goirc/client/connection.go:298 +0x96
gosched0()
/usr/lib/go/src/pkg/runtime/proc.c:1224 +0x9f�
Reply to this email directly or view it on GitHubhttps://github.com//issues/35
.
Hi Lucy,
I got some time to fix up a lot of the races. I doubt everything is completely fixed, since there's no locking or channel protection within goirc/state at all, but I'm still thinking about the way I want to change things (and still rather busy). PTAL at current master and let me know what you think?
I think it looks good so far. I'll start testing it in my bot.
Bah, can't fix multiple issues with comma-separated identifiers.