蒋老大:这是微软的BUG吗? 关于IWebBrowser2和IActiveScript

jameshooo 2008-03-19 01:17:49
我在一个测试应用中,创建WebBrowser窗口,并且创建了IActiveScript脚本引擎(JS脚本引擎)。仅仅是创建,并不做更多的事情,大多数情况下运行正常,但是在特定情况下程序一定CRASH,找不到原因,下表列出测试用例:

window1: 表示是否创建第一个浏览器窗口
event1: 表示是否跟第一个浏览器窗口的DWebBrowserEvents2建立了事件连接
window2: 表示是否创建第二个浏览器窗口
event2: 表示是否跟第二个浏览器窗口的DWebBrowserEvents2建立了事件连接
IActiveScript: 表示是否创建了脚本引擎接口
Result: 运行结果
===============================================================================================================
window1 event1 window2 event2 IActiveScript Result
===============================================================================================================
no no yes ok <--仅仅使用脚本引擎,无问题
yes yes yes yes no ok <--仅仅打开多个浏览器,无问题
yes no no yes ok
yes no yes no yes ok
yes no yes yes yes CRASH
yes yes no yes ok
yes yes yes no yes CRASH
yes yes yes yes yes CRASH

经过无数次的测试表明,当启用脚本引擎时(即使不执行任何脚本代码),在打开两个浏览器的情况下,只要有任意一个浏览器建立了事件通知,程序一定CRASH,位置是随机的。
测试用的浏览器宿主窗口是ATL的CAxWindow,或者我自己实现的容器窗口,结果一致。
其实测试用例分了更多细类,包括把三个部件放到不同的线程,结果还是一样,有一点可以肯定,发生CRASH的线程一定是加载脚本引擎的线程。

网上搜索未果,特向蒋老大咨询,本来想向你提问,但是系统老提示你不存在:(,希望老大有空能自己尝试一下,并能找到问题原因。对了,测试平台是vista,XP并未测试。
...全文
649 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
clever101 2008-09-26
  • 打赏
  • 举报
回复
蒋老大怎么不出来说话呢?
Win32Coder 2008-09-23
  • 打赏
  • 举报
回复
千万不能沉,蒋老大是 http://blog.csdn.net/jiangsheng 么?

真厉害!
  • 打赏
  • 举报
回复
就这么沉了
scq2099yt 2008-03-23
  • 打赏
  • 举报
回复
学习下,期待楼主早点解决问题,我也能学点东西
arong1234 2008-03-23
  • 打赏
  • 举报
回复
这种跨线程调用的marshal工作是你自己做的还是系统自动做的?系统自动做倒是真有可能没考虑multiple instances的问题

用windbg跟踪一下吧
terran_ye 2008-03-23
  • 打赏
  • 举报
回复
mark一下,有答案了再学习
long_xing 2008-03-23
  • 打赏
  • 举报
回复
哇,漫天飞星。
俺提着裤衩赶紧跑,羞啊!
jameshooo 2008-03-22
  • 打赏
  • 举报
回复
偶准备放弃不试了,纯粹的技术验证,并未用作实际用途。凑够30人就散分。微软的脚本引擎存在BUG,某些特定执行场合会出现死锁,不过概率很小,我打开消息循环等待脚本引擎发起COM调用,结果引擎在等待调用返回,等啊等……,但是消息循环收不到调用消息,引擎等到天荒地老海枯石烂等你一万年不变心,连close都置之不理,因为脚本线程进入了内核调用没有出来,所以TerminateThread都不管用,只能Kill进程,具体原因要问Bill Gates大哥。
ninehoolu 2008-03-22
  • 打赏
  • 举报
回复
只有一条裤衩的裤衩,陪着星星们,观望砖石的出现。
panzi667 2008-03-21
  • 打赏
  • 举报
回复
UP一下
仰望一下
shakaqrj 2008-03-21
  • 打赏
  • 举报
回复
满天的星星
Eleven 2008-03-21
  • 打赏
  • 举报
回复
UP
关注一下
sjdev 2008-03-21
  • 打赏
  • 举报
回复
没准就是一bug.
以前我写的一ActiveX,在用户Confirm时Crash.后来屏蔽一段完全无关的代码后正常.
iyranly 2008-03-21
  • 打赏
  • 举报
回复
星星,等待钻石的出现。
不敢多言
dfpgb 2008-03-21
  • 打赏
  • 举报
回复
纯粹凑热闹的
rageliu 2008-03-20
  • 打赏
  • 举报
回复
呵呵,貌似一直深水潜着的人都来了
快乐鹦鹉 2008-03-20
  • 打赏
  • 举报
回复
恰好路过,等小蒋来报道。
  • 打赏
  • 举报
回复
UP
关注一下
jameshooo 2008-03-20
  • 打赏
  • 举报
回复
刚刚下载了系统符号调试了一下,发现问题的原因跟代理接口列集相关,但不全是代理接口的问题,所以直接原因还没确定。
jasonshark 2008-03-20
  • 打赏
  • 举报
回复
这么多分...

Crash的直接原因是什么?AV? 我觉得把crash的直接原因列出来会比较有帮助
加载更多回复(14)

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧