Open chenbaoding2818 opened 1 month ago
当心跳与业务同时WriteMessage方法时,会导致c.writer存在竞态问题
Will you submit a PR to solve this problem?
it seems like heartbeat not obtain packetLock cause the problem
@chenbaoding2818 we have fixed this bug. Would you please check it by v1.4.12?
WARNING: DATA RACE Read at 0x00c0004610f8 by goroutine 14: github.com/gorilla/websocket.(Conn).beginMessage() /Users/vendor/github.com/gorilla/websocket/conn.go:472 +0x65 github.com/gorilla/websocket.(Conn).WriteMessage() /Users/vendor/github.com/gorilla/websocket/conn.go:757 +0xf9 github.com/apache/dubbo-getty.(gettyWSConn).writePing() /Users/vendor/github.com/apache/dubbo-getty/connection.go:627 +0x68 github.com/apache/dubbo-getty.heartbeat.func1() /Users/vendor/github.com/apache/dubbo-getty/session.go:519 +0x6d github.com/apache/dubbo-getty.heartbeat() /Users/vendor/github.com/apache/dubbo-getty/session.go:533 +0x167 github.com/dubbogo/gost/time.(TimerWheel).run() /Users/vendor/github.com/dubbogo/gost/time/timer.go:281 +0x2b9 github.com/dubbogo/gost/time.NewTimerWheel.func1() /Users/vendor/github.com/dubbogo/gost/time/timer.go:216 +0x4a4
Previous write at 0x00c0004610f8 by goroutine 7976: github.com/gorilla/websocket.(messageWriter).endMessage() /Users/vendor/github.com/gorilla/websocket/conn.go:539 +0xcd github.com/gorilla/websocket.(messageWriter).flushFrame() /Users/vendor/github.com/gorilla/websocket/conn.go:626 +0xb85 github.com/gorilla/websocket.(Conn).WriteMessage() /Users/vendor/github.com/gorilla/websocket/conn.go:763 +0x1d0 github.com/apache/dubbo-getty.(gettyWSConn).send() /Users/vendor/github.com/apache/dubbo-getty/connection.go:618 +0x117 github.com/apache/dubbo-getty.(session).WritePkg() /Users/vendor/github.com/apache/dubbo-getty/session.go:408 +0x3a7 server/common/net.(Session).Write()