cefSharp在XP下使得程序崩溃记录
前言:这是一个奇葩的问题,到现在自己还没有搞明白问题出现在哪里,但是从问题总算是解决了,希望看到此文章的大牛,如果知道问题出在什么地方,可以告知一下。
【一个在XP系统下面应用程序崩溃问题】
资源: 在官网下载了cefSharp1包后,将需要的文件引入项目中项目开发使用的是VS2012,环境win7系统。在win7系统下面,系统很稳定,运行正常。在XP系统下我们也做过简单测试,没有发现太多问题。
一次演示汇报:前两天因为客户端现场需要演示汇报,演示的机器是一台XP系统。在部署完成后做简单测试时,被吓尿了。当程序中听音控件播放两次以上的语音时,系统直接崩溃,连提示信息都没有。NND,为什么总是关键时刻掉链子。
没有任何作用的异常信息:
使用VS在XP系统下对程序进行调试,可VS根本就不能捕获到异常。这下坑大了。操作系统出现的异常如下,但对我们解决问题有用信息几乎为0:

没办法只能对所有的异常出现可能的地方进行猜测。根据现象我们发现系统只要在XP系统下就会出现崩溃的可能。于是我把官网cefSharp的的代码看了一下,发现本身编译好的dll并没有支持XP系统,于是我对工程中的cefSharp工程和cefSharp.winform工程的平台工具集设置成XP系统:

编译好后,替换工程中的cefSharp.dll和cefSharp.winform.dll后并测试。发现崩溃频率有所降低,但是只要我们的播放控件进行播音操作就有可能出现崩溃。于是我们猜测可能是我们的播放控件与cef可能在XP下发生冲突产生错误了。
【偶然机会将问题定位】
于是,我和这边负责播放控件的JW哥一起来排查问题,佳伟哥负责排查播放器控件,我负责cefSharp控件。就这样两个人苦逼的折腾一天,最后我们得出结论,问题出在cefSharp控件这一块。JW哥调试后发现出现异常时,播放控件执行到最后的每次位置不一样,而且播放器代码相对稳定。我这边则主要做了如下操作:
1.使用webBrowser替换cefSharp,结果程序在XP下正常。
2.客户端只加载播放器,不播放。结果程序在XP下正常。
3.客户端不加载播放器,只加载网页,结果程序XP下正常。
4.客户端去除CEF.Initialize()方法,结果程序正常。
当测试一天后,我发现去除了CEF.Initialize()方法程序正常,心中那喜悦之情,仿佛中了彩票500万一样。(这一天,太痛苦,所有的测试只能根据猜测,不能通过工具捕获,NND)。
【心中的疑惑】
既然问题已经将范围缩小到CEF.Initialize()的方法中,那就看看该方法做了什么操作,其实该方法做了只是创建一个Settings对象,去设置CEF的环境,settings里面主要是对系统做了缓存路径和和设置Flash插件。我开始做了如下尝试:
1.去除设置Flash插件,结果程序在XP下崩溃。
2.去除设置缓存路径,结果程序XP下崩溃。
3.Setting只创建一个对象,什么也不设置,结果程序还是崩溃。
看到这三条测试结果,我瞬间崩溃。这是什么奇葩问题,难道不能对CEF进行设置????
【定位到最后原因】
思考之前在XP下简单测试并没有发现这个现象。本来系统对CEF环境位置是这样的:

该环境初始化的方法是参照官网给出的例子的位置进行的CEF环境的初始化。但是当我们将CEF环境的初始化,放到MainForm的构造函数中,系统竟然不再出现崩溃。(看到这样的结果,真有点百思不得其解)。
【思考】
对于本次的问题,我也做了如下的思考:
1.现在网络上的一些开源的东西,其开发者可能对有些问题存在不清楚的地方。
2.其实本次问题一开始出现,自己就应该与之前XP系统测试结果作比较,(因为该环境初始化的位置XP测试过后整理的部分)。
3.面对问题,方式方法很重要
虽然问题是解决了,但是还没有真正搞明白为什么这个CEF环境的初始位置会对系统的稳定性产生影响,希望看到此文章的大牛,有知道的给出回复,我将灰常谢谢!O(∩_∩)O
cefSharp在XP下使得程序崩溃记录的更多相关文章
- Win32环境下的程序崩溃异常定位
1 案例描述 作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭.请与您的供应商联系.呵呵,这句微软的“名 ...
- Google Breakpad 在 windows下捕获程序崩溃报告
http://blog.csdn.net/goforwardtostep/article/details/56304285
- WinCE应用程序崩溃提示框的处理
WinCE的开发人员和WinCE设备的用户应该对下面这两个错误不陌生,"Application encountered a serious error and must shut down& ...
- .NET 程序在 Windows XP 下调用 SHA512CryptoServiceProvider 方法报 PlatformNotSupportedException 异常
转自:http://stackoverflow.com/questions/1293905/sha256cryptoserviceprovider-and-related-possible-to-us ...
- Linux下程序崩溃,ulimit,coredump,gdbserver
操作系统:Ubuntu10.04 前言: 在程序崩溃后,如何快速定位问题. 以下方法适用于开发调试阶段,不太适用成品. 本文着眼于嵌入式,PC方面更简单. 核心:gdbserv ...
- (转载)用VS2012或VS2013在win7下编写的程序在XP下运行就出现“不是有效的win32应用程序“
原文地址:http://www.vcerror.com/?p=1483 问题描述: 用VC2013编译了一个程序,在Windows 8.Windows 7(64位.32位)下都能正常运行.但在Win ...
- WPF 程序在 Windows XP 下报错:The image format is unrecognized.
最近做的一个 WPF 程序,在 Windows 7 或以上版本的系统中,测试都很正常,在 Windows XP 下运行时一开始就报了个错误: { "ClassName" : ...
- 如何让VS2012编写的程序在XP下运行
Win32主程序需要以下设置 第一步:在工程属性General设置 第二步:在C/C++ Code Generation 设置 第三步:SubSystem 和 Minimum Required Ve ...
- 如何让VS2013编写的程序在xp下运行
总体分c++程序和c#程序 1.c++程序 这个用C++编写的程序可以经过设置后在XP下运行,主要的“平台工具集”里修改就可以. 额外说明:(1)程序必须为Dotnet 4.0及以下版本.(XP只支持 ...
随机推荐
- Web Server tomcat配置网站
tomcat配置网站 环境变量: 变量名:CATALINA_HOME 变量值:安装路径 1.在tomcat文件夹的conf"catalina"localhost(对于Tomcat6 ...
- Linux驱动修炼之道-RTC子系统框架与源码分析【转】
转自:http://helloyesyes.iteye.com/blog/1072433 努力成为linux kernel hacker的人李万鹏原创作品,为梦而战.转载请标明出处 http://bl ...
- 在windows系统上安装VMware Workstation虚拟机,然后在虚拟机VMware Workstation上安装linux系统,在linux系统安装xshell的服务端,在windows系统上安装xshell。用windows系统上的xshell连接到linux
第一步:安装xshell: 去百度 xshell ,然后安装一下就可以了.就是普通的软件安装,在这里不做过多的接收. 第二步:安装虚拟机VMware Workstation 百度安装,不做过介绍 ...
- 使用 httpkit 来替代 jetty
Compojure 是一个基于 ring 的上层web开发框架.在 lein new compojure my-app 生成的项目中,默认是启用 jetty 服务器的,最近用到了 http-kit 中 ...
- Asp.net MVC 3实例学习之ExtShop(四)——完成产品列表页
在完成产品列表页前要做一些准备功夫.首先是去下载MvcPager用了为产品列表分页.下载的可能是基于MVC 2的,没关系,可以用在MVC 3上.如果有担心,下载源代码重新编译一次好了.下载后将DLL添 ...
- 警惕rapidxml的陷阱:添加节点时,请保证变量的生命周期
http://www.cnblogs.com/chutianyao/p/3246592.html 项目中要使用xml打包.解析协议,HQ指定了使用rapidxml--号称是最快的xml解析器. 功能很 ...
- UNIX / Linux: 2 Ways to Add Swap Space Using dd, mkswap and swapon
UNIX / Linux: 2 Ways to Add Swap Space Using dd, mkswap and swapon by RAMESH NATARAJAN on AUGUST 18, ...
- Android实现图片裁切
介绍 在应用开发中,如果涉及到个人信息,头像一般是不可避免的,类似这种情况,我们就需要用到图片裁切的功能,实现头像裁切,然后上传给服务器. 一般裁切的做法就是图层叠加选取框,然后根据坐标,计算裁切区域 ...
- golang 常用网址收藏
1:beego 模板语法指南:http://blog.go-china.org/03-beego-template 2:go 语言sublimetext2配置:http://www.kankanews ...
- linux 多处理器概念
Linux 提出了 Multi-Processing 的概念,它的调度器可以将操作系统的线程均分到各个核(或硬件线程)上去执行,以此达到并行计算的目的,从而也可以极大地提高系统的性能. 实现计数器 1 ...