Chinaunix首页 | 论坛 | 博客
  • 博客访问: 315499
  • 博文数量: 174
  • 博客积分: 3061
  • 博客等级: 中校
  • 技术积分: 1740
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-04 22:43
文章分类

全部博文(174)

文章存档

2011年(54)

2010年(14)

2009年(30)

2008年(26)

2007年(27)

2006年(23)

我的朋友

分类: WINDOWS

2009-04-17 13:23:13

这个问题今天花了点时间研究了一下,找到原因且解决!细节如下:

1.       首先将liy的插件修改为最简单的插件只有item方式发现在vista环境下必然crash,这样基本排除了liy自己的log代码,以及扩展窗口插件的干扰。

2.       xp先同样的client以及plugin未发现异常.

3.       使用windbg远程抓vista的加载器进程提出dump并且调试,初步怀疑是套件环境相关。

4.       我自己写了一个client程序模拟aliapplaoder那样启动一个线程创建然后退出,发现在vista下依然正常,因此排除掉liyvb插件引起的问题可能性。

5.       到了这儿将问题定位到sdk的代码上.

6.       使用vs2005调试加载器,并且字退出时候打开所有异常,发现出现了vista下相同的0xc0000005 access vilotion 异常,不过奇怪的是xp下这个异常并不表现为crash,但是同样的dump以及触发的异常在vista下反映为crash,这个咨询过sl,暂时不知道?

7.       通过在加载的stub以及插件创建代码的log添加打印线程id

8.       结果发现实际上插件的对象在工作线程释放,由于我的失误 , 插件对象依靠主线程的stub对象的析构函数释放,因此直接导致了这个访问异常。

 

到了这儿原因找到了,也解决了,不过还留下一个疑问? 为什么xp吃掉了这个异常,而vistawerfault.exe 系统捕获了这个异常,还需要

深入调查。

阅读(537) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~