文档章节

mono 3.10 Socket引发未知异常的悲剧事情...

泥水佬
 泥水佬
发布于 2014/10/06 22:12
字数 269
阅读 570
收藏 0

        最近在做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团队,希望他们能处理一下这个问题)

© 著作权归作者所有

泥水佬

泥水佬

粉丝 78
博文 95
码字总数 65026
作品 7
广州
架构师
私信 提问
Linux下Nginx + mono安装与配置

1.安装 nginx 编译安装时注意 prec zlib 等前置nginx 包 2.安装 mono centos官网没有编译好的包,需要下载源码编译,稳定版 wget http://download.mono-project.com/sources/mono/mono-2.10...

从前
2013/02/28
2.7K
0
VS2013中的MVC5模板部署到mono上的艰辛历程

部署环境:CentOS7 + Mono 3.10 + Jexus 5.6 在Xamarin.Studio创建的asp.net项目,部署过程非常顺利,没有遇到什么问题;但在VS2013中创建的asp.net项目,部署过程会有一些波折。现在想想,原...

小近
2014/10/28
3.8K
8
.NET移植Mono初体验

序论:关于mono的介绍可以猛击这里了解!如果你因为licence的问题而对mono望而却步,你可以仔细看下这里,之后你就会大胆的去用了! 最近为了练习做了一个简单的三层架构的信息管理系统,除了...

mszhangxuefei
2011/11/18
0
0
SuperSocket 1.6.4 发布,修复多个缺陷

SuperSocket 今日发布 1.6.4,此版本包含多个缺陷修复并升级 log4net 至 1.2.13: * 修复了在服务器状态收集中可能会引起程序崩溃的缺陷 * 修复了一个在连接关闭时检查是否有待发送数据可能会...

江振宇
2014/12/03
3K
3
Linux~上部署.net MVC出现的问题与解决

这几天一直在搞linux下面的.net mvc的部署工作,遇到了很多问题,还好有一些朋友的帮助,问题才得到了解决! 环境:Linux+Mono+Jexus 希望的结果:直接运行windows+vistualstudio开发的MVC...

mcy247
2017/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

读书笔记:深入理解ES6 (五)

第五章 解构:使数据访问更便捷 第1节 为什么使用解构功能?   在ES5中,开发者们从对象、数组中获取特定数据并赋值给变量,编写了很多看起来同质化的代码。例如: 1 let options = {2 ...

张森ZS
11分钟前
9
0
CentOS7 yum方式安装MySQL5.7

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。 1 下载并安装MySQL官方的 Yum Repository [root@localho...

roockee
19分钟前
7
0
Allegro三种自定义设置快捷键的方法

Allegro自定义设置快捷键的三种方法: 1、在Allegro PCB editor 命令窗口直接定义 2、通过修改用户变量env文件来设置快捷键 3、定义笔画为快捷键 1、在Allegro PCB editor 命令窗口直接定义 ...

demyar
23分钟前
12
0
如何做一张能让人眼前一亮的大屏?

作为在职场驰骋的社会人,提到数据可视化大家应该都不陌生了。数据可视化的作用也不用我多说,主要是利用图形化手段,更清晰直观地将数据展示。多层次、交互式的可视化分析能够方便决策者理解...

朕想上头条
24分钟前
6
0
TL138/1808/6748-EthEVM开发板硬件CPU、FLASH、RAM

TL138/1808/6748-EthEVM是广州创龙基于SOM-TL138/1808/6748核心板开发的一款开发板,具有三个网络接口。由于SOM-TL138/1808/6748核心板管脚兼容,所以此三个核心板共用同一个底板。开发板采用...

Tronlong创龙
29分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部