.NET CORE 2.0 Linux下内存BUG
来源:互联网 发布:吃金针菇拉金针菇知乎 编辑:程序博客网 时间:2024/05/20 07:50
1.zkweb.system.drawing linux下卡死
请先看这样一段代码:
var image = new Bitmap(int_ImageWidth, letterHeight);...image = TwistImage(image, true, Next(1, 3), Next(4, 6));MemoryStream ms = new MemoryStream();image.Save(ms, ImageFormat.Jpeg);image.Dispose();//正弦扭曲public Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase) { var PI = 6.283185307; var destBmp = new Bitmap(srcBmp.Width, srcBmp.Height); var graph = Graphics.FromImage(destBmp); graph.FillRectangle(new SolidBrush(Color.White), 0, 0, destBmp.Width, destBmp.Height); graph.Dispose(); double dBaseAxisLen = bXDir ? destBmp.Height : destBmp.Width; for (var i = 0; i < destBmp.Width; i++) { for (var j = 0; j < destBmp.Height; j++) { double dx = 0; dx = bXDir ? PI * j / dBaseAxisLen : PI * i / dBaseAxisLen; dx += dPhase; var dy = Math.Sin(dx); int nOldX = 0, nOldY = 0; nOldX = bXDir ? i + (int)(dy * dMultValue) : i; nOldY = bXDir ? j : j + (int)(dy * dMultValue); var color = srcBmp.GetPixel(i, j); if (nOldX >= 0 && nOldX < destBmp.Width && nOldY >= 0 && nOldY < destBmp.Height) { destBmp.SetPixel(nOldX, nOldY, color); } } } srcBmp.Dispose(); return destBmp; }
在windows上跑这样一段代码时没有任何问题,当我发布在linux上的时候,居然死掉了,是死掉,没有任何异常,网页一直在等待中,搞得我非常纳闷,对于我这个有强迫症的人来说,直接无限测试,找到位置,多次测试寻找中偶然得到一份内存错误的信息
这个BUG是出在image.save 是时候,应该是内存错误,导致不再向下执行,不止这个线程,整个dotnet 瘫痪,无法接收处理新的请求,但却没有多余的CPU占用。导致这个问题出现的是TwistImage 中的srcBmp.Dispose(); 把这个放在最后一起释放可以暂时回避掉这个BUG
我觉得这个问题应该由,NET CORE背锅,虽然可能是zkweb.system.drawing 导致的错误,第一 网站框架线程间一定应该是黑盒子,即在不发生资源耗尽的情况下,请求中出现
错误应该是不对其他请求造成任何影响,更不应该出现这种访问请求线程导致这个服务器崩溃的情况 第二 无法确定是否是由于.NET CORE 框架内部的内存BUG 第三 无法确定是否是由于.NET CORE 框架引用C/C++ DLL导致的内存管理错误。最后可能是由于zkweb.system.drawing 内部的静态对象管理或者DLL中导致的BUG,综上所述,两者可能都有责任,但还是该.NET CORE 承担主要责任
阅读全文
0 0
- .NET CORE 2.0 Linux下内存BUG
- linux下内存泄露查找、BUG调试
- linux下内存泄露查找、BUG调试
- 在linux下利用程序崩溃后的core文件分析bug
- 在linux下利用程序崩溃后的core文件分析bug
- Linux下生成core文件的临时解决方法-RHEL5.X bug
- 在linux下利用程序崩溃后的core文件分析bug
- linux下生成core dump文件方法及设置 bug定位
- linux下调试core
- Linux下core文件
- linux下core文件
- linux 下 core文件
- linux下core文件
- linux下core dump
- Linux下,说说core
- linux下如何产生core,调试core
- linux下如何产生core,调试core
- linux下如何产生core,调试core
- 标签(div、input)大小随内容变化
- 使用 JAX-RS 简化 REST 应用开发
- 关于表单提交数据乱码问题
- 众包模式
- 函数的重载
- .NET CORE 2.0 Linux下内存BUG
- PHP网站与微信公众号接口接入
- 图形学领域的关键算法及源码[转]
- Java集合Map
- Kconfig .config Makefile 联系和区别
- 万恶的Tomcat8.5
- codility BinaryGap
- 纯html jquery 实现加载效果(图片旋转)
- xml