首页 > 代码库 > mono 3.10 Socket引发未知异常的悲剧事情...
mono 3.10 Socket引发未知异常的悲剧事情...
最近在做mono 3.10针对socket性能方面的测试,在想对压力比较高的情况下发现了mono的一个bug会导致程序引发未知异常从而导致程序结束的严重问题.
错误信息
Unhandled Exception: System.InvalidOperationException: EndSend can only be called once per asynchronous operation at System.Net.Sockets.Socket.EndSend (IAsyncResult asyncResult, System.Net.Sockets.SocketError& errorCode) [0x00000] in <filename unknown>:0 at System.Net.Sockets.Socket.EndSend (IAsyncResult result) [0x00000] in <filename unknown>:0 at System.Net.Sockets.SocketAsyncEventArgs.SendCallback (IAsyncResult ares) [0x00000] in <filename unknown>:0 at System.Net.Sockets.SocketAsyncEventArgs.DispatcherCB (IAsyncResult ares) [0x00000] in <filename unknown>:0 epoll(ADD): 9 Bad file descriptor
从代码上来看是由Socket.EndSend引发的异常没有被处理,看样子是由epoll导面抛出的.SocketAsyncEventArgs.SendCallback的处理代码如下:
internal void SendCallback (IAsyncResult ares) { try { BytesTransferred = curSocket.EndSend (ares); } catch (SocketException se){ SocketError = se.SocketErrorCode; } catch (ObjectDisposedException) { SocketError = SocketError.OperationAborted; } finally { OnCompleted (this); } }从代码上看来应该是有些异常没有处理,显然epool(add):9 Bad file descriptor应该是一个file io异常,由于以上代码没有catch....结果悲剧的事情发生了.(问题已经提交到mono团队,希望他们能处理一下这个问题)
mono 3.10 Socket引发未知异常的悲剧事情...
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。