cloudwego / netpoll

A high-performance non-blocking I/O networking framework focusing on RPC scenarios.
Apache License 2.0
4.04k stars 470 forks source link

fd_operator.go:62 panic #330

Closed gh73962 closed 1 month ago

gh73962 commented 5 months ago

Describe the bug 生产环境的websocket server 最近偶尔会在netpoll.Connection Close()调用后这样

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x115d016]

goroutine 4340 [running]:
github.com/cloudwego/netpoll.(*FDOperator).Free(0xc00c49f738?)
    /root/go/pkg/mod/github.com/cloudwego/netpoll@v0.6.0/fd_operator.go:62 +0x16
github.com/cloudwego/netpoll.(*connection).init.(*connection).initFinalizer.func1({0x4103c5?, 0xc002b52800?})
    /root/go/pkg/mod/github.com/cloudwego/netpoll@v0.6.0/connection_impl.go:373 +0x45
github.com/cloudwego/netpoll.(*connection).closeCallback(0x0?, 0x0?, 0x0?)
    /root/go/pkg/mod/github.com/cloudwego/netpoll@v0.6.0/connection_onevent.go:321 +0x21f
github.com/cloudwego/netpoll.(*connection).onClose(0xc00158d520?)
    /root/go/pkg/mod/github.com/cloudwego/netpoll@v0.6.0/connection_reactor.go:67 +0x105
github.com/cloudwego/netpoll.(*connection).Close(0x989680?)
    /root/go/pkg/mod/github.com/cloudwego/netpoll@v0.6.0/connection_impl.go:299 +0x13

0.6.0 之前的版本用了1年多(no feature)没有这个情况发生

To Reproduce unknown

Additional context run on almalinux:9.2 x86_64 有什么建议排查这个问题吗?

joway commented 5 months ago

@gh73962 「最近偶尔」的意思是,最近你们升级过了吗还是什么?

gh73962 commented 5 months ago

4月从0.5.1升级到0.6 然后开始出现这个问题,大概出现了3次

joway commented 5 months ago

@gh73962 比较奇怪,内部至少也有相当大规模的实例在使用了,怀疑和使用姿势有关系。你们的websocket是自己实现的还是用的什么框架?

gh73962 commented 5 months ago

用的github.com/gobwas/ws读写数据和帧控制, 接的v0.3.2版本那会ws example没有,都是自己实现的 @joway

gh73962 commented 5 months ago

conn 用的github.com/orcaman/concurrent-map/v2存储的

gh73962 commented 5 months ago

我先在close前检查一下IsActive()看看 现场pod stdout 就是截图那点内容, 其他没截取的就是配置信息什么的

joway commented 5 months ago

@gh73962 ok。如果没有敏感信息的话,你把二进制和 coredump 后的文件可以发我邮箱,也能debug 。