gpt4 book ai didi

c# - 在客户环境中调试崩溃的后续步骤

转载 作者:太空狗 更新时间:2023-10-30 01:08:45 25 4
gpt4 key购买 nike

我们产品的一部分是 IE 插件 (BHO),它可以在多个操作系统版本/IE 版本的许多不同环境中愉快地运行。

但是,在一个客户的试用设置中,通过 citrix XenDesktop 运行 XP SP3 机器,IE 7 在满足以下两个条件时崩溃:

  • 我们的插件已加载
  • Shockwave flash 对象加载项已加载(最新版本 - Flash11e.ocx)

一些额外的信息:

  • 崩溃发生在我们随后尝试向用户显示对话框时,或者在此之后不久。然而,崩溃并没有发生在我们的代码中,它都是用 C# 编写的,它发生在不同的地方,通常是 ole32.dll。
  • 我们的对话框是在网络浏览器控件中呈现的 HTML 页面,通过 BHO 中的 form.ShowDialog(ownerWindow) 显示在表单中。

这两个插件似乎都可以独立运行。禁用 Flash 或跳过任何使用 Flash 的站点可防止崩溃。

客户相当通融,我能够使用 MS 调试工具运行 IE,以便在崩溃时捕获一些转储。我现在在解释转储时遇到了一些麻烦。认为这是堆损坏,我在启用了完整页面堆的情况下运行了调试工具,但这并没有触发断点。

Debugging工具分析如下:

In iexplore_PID_5064_Date_12_20_2011__Time_11_19_26AM_161_Second_Chance_Exception_C0000005.dmp the assembly instruction at ole32!HandleIncomingCall+e2 in C:\WINDOWS\system32\ole32.dll from Microsoft Corporation has caused an access violation exception (0xC0000005) when trying to read from memory location 0x03ce4ff8 on thread

崩溃点的堆栈跟踪是:

Thread 7 - System ID 1140
Entry point ieframe!CTabWindow::_TabWindowThreadProc
Create time 20/12/2011 19:18:08
Time spent in user mode 0 Days 0:0:19.828
Time spent in kernel mode 0 Days 0:0:10.468


Full Call Stack


Function Arg 1 Arg 2 Arg 3 Arg 4 Source
ole32!HandleIncomingCall+e2 0f9aafbc 00000034 00000001 07e8ab6c
ole32!STAInvoke+24 17444f80 00000001 0781efc0 077e8f10
ole32!AppInvoke+7e 17444f28 077e8f10 0781efc0 07e8ab6c
ole32!ComInvokeWithLockAndIPID+2c2 17444f28 077ec420 00000000 17444f28
ole32!ComInvoke+60 17444f28 00000400 0774ee30 07bcfe48
ole32!ThreadDispatch+23 17444f28 07bcfeb0 7752b096 00000000
ole32!ThreadWndProc+fe 005d0594 078b6ee0 0000babe 17444f2c
user32!InternalCallWinProc+28 7752b096 005d0594 00000400 0000babe
user32!UserCallWinProcCheckWow+150 00000000 7752b096 005d0594 00000400
user32!DispatchMessageWorker+306 7bcff64 00000000 07bcffb4 3e25e69b
user32!DispatchMessageW+f 07bcff64 0013e490 0013e5b8 07868ff0
ieframe!CTabWindow::_TabWindowThreadProc+189 07e03e30 0013e490 0013e5b8 07868ff0
kernel32!BaseThreadStart+37 3e25e464 07868ff0 00000000 00000000

我要看看我还能从这个转储文件中得到什么,但我希望这里有人能有好主意。我想在客户现场测试更多的东西,但我们只有这么多机会,所以我需要非常明智地利用我到达那里的任何时间。

对我来说,接下来的几个步骤似乎是:

  • 如果问题是 flash 在我们显示对话框的过程中搞乱了某些东西,我想测试一个完全精简的 BHO,它只显示对话框,以表明问题不在于我们的代码。
  • 机器上安装了很多其他插件,最好从一个精简的图像开始,然后从那里构建,看看问题何时开始触发。

有时崩溃发生在 pseuoserverinproc.dll 中,它是 HDX MediaStream 的一部分,它在本地而不是在服务器上运行 Flash 内容。

==更新

我在 WinDbg 分析我拥有的转储方面取得了相当大的成功。我认为在有问题的桌面上尝试使用 gflags/windbg 并实时调试它是很有意义的。

这将是我向目前处于类似职位的任何人推荐的下一步,当我有机会应用它时,我会在一周后更多地了解这个建议有多好。

最佳答案

Flash Player 有一个调试器版本,可以输出可能对您有帮助的诊断信息。我意识到这个问题不一定是一闪而过的,但它可能会提供对可能问题的一些见解。

我必须承认我已经有一段时间没有安装它了,但我相信这些链接可能会对您有所帮助:

关于如何配置调试器版本以输出日志的说明:

http://kb2.adobe.com/cps/403/kb403009.html

调试器版本下载地址:

http://www.adobe.com/support/flashplayer/downloads.html

关于c# - 在客户环境中调试崩溃的后续步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8588808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com