chronoxor / NetCoreServer

Ultra fast and low latency asynchronous socket server & client C# .NET Core library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution
https://chronoxor.github.io/NetCoreServer
MIT License
2.63k stars 550 forks source link

Cannot access a disposed object #296

Open anyway2019 opened 4 months ago

anyway2019 commented 4 months ago

the env:

net6.0-windows WPF

the version of NetCoreServer:

6.7.0

the stack trace:

Application: PowerFunRowerNet.exe CoreCLR Version: 6.0.2123.36311 .NET Version: 6.0.21 Description:
The process was terminated due to an unhandled exception. 
Exception Info: System.ObjectDisposedException: Cannot access a disposed object. Object name: 'System.Net.Sockets.Socket'. at System.Net.Sockets.Socket.ThrowObjectDisposedException() at System.Net.Sockets.Socket.get_RemoteEndPoint() 
at PowerFunRowerNet.Network.TcpService.PfTcpSession.OnConnected() in E:\pf\powefun-rower-net\Network\TcpService.cs:line 116 at NetCoreServer.TcpSession.Connect(Socket socket) at NetCoreServer.TcpServer.ProcessAccept(SocketAsyncEventArgs e) 
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- 
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pNativeOverlapped)

the log is :

2024-04-22 21:16:34.822 +08:00 [ERR] OnConnected
2024-04-22 21:16:34.822 +08:00 [ERR] OnDisconnected

it seems the issue that connect event and disconnect envent trigger at same time still exsits in 6.7.0

iBoundary commented 4 months ago

I also encountered this issue. Have you resolved it now? @anyway2019 @chronoxor

anyway2019 commented 4 months ago

I also encountered this issue. Have you resolved it now? @anyway2019 @chronoxor

not yet,i just add try catch block.

ilsnk commented 3 months ago

We have a similar case

System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'System.Net.Sockets.Socket'.
   at System.Net.Sockets.Socket.ThrowObjectDisposedException()
   at System.Net.Sockets.Socket.Send(ReadOnlySpan`1 buffer, SocketFlags socketFlags, SocketError& errorCode)
   at NetCoreServer.TcpSession.Send(ReadOnlySpan`1 buffer) in /src/websocket-server/NetCoreServer/TcpSession.cs:line 283
   at NetCoreServer.WsSession.SendBinary(ReadOnlySpan`1 buffer) in /src/websocket-server/NetCoreServer/WsSession.cs:line 74
ilsnk commented 4 weeks ago

@anyway2019 maybe you want contribute this action?)