博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mono 3.10 Socket引发未知异常的悲剧事情...
阅读量:5771 次
发布时间:2019-06-18

本文共 1251 字,大约阅读时间需要 4 分钟。

  hot3.png

        最近在做mono 3.10针对socket性能方面的测试,在想对压力比较高的情况下发现了mono的一个bug会导致程序引发未知异常从而导致程序结束的严重问题.

错误信息

Unhandled Exception:System.InvalidOperationException: EndSend can only be called once perasynchronous operation  at System.Net.Sockets.Socket.EndSend (IAsyncResult asyncResult,System.Net.Sockets.SocketError& errorCode) [0x00000] in 
:0 at System.Net.Sockets.Socket.EndSend (IAsyncResult result) [0x00000] in
:0 at System.Net.Sockets.SocketAsyncEventArgs.SendCallback (IAsyncResult ares)[0x00000] in
:0 at System.Net.Sockets.SocketAsyncEventArgs.DispatcherCB (IAsyncResult ares)[0x00000] in
:0epoll(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团队,希望他们能处理一下这个问题)

转载于:https://my.oschina.net/ikende/blog/324545

你可能感兴趣的文章
jQuery|元素遍历
查看>>
FreeNAS8 ISCSI target & initiator for linux/windows
查看>>
Rainbond 5.0.4版本发布-做最好用的云应用操作系统
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
OracleLinux安装说明
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
使用@media实现IE hack的方法
查看>>
oracle体系结构
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>
Proxy服务器配置_Squid
查看>>
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>
纯DIV+CSS简单实现Tab选项卡左右切换效果
查看>>
Centos7同时运行多个Tomcat
查看>>
使用CocoaPods过程中的几个问题
查看>>
Spring boot 整合CXF webservice 全部被拦截的问题
查看>>
Pinpoint跨节点统计失败
查看>>
机房带宽暴涨问题分析及解决方法
查看>>
XP 安装ORACLE
查看>>