Silverlight 5 - 调试 npctrl.dll 崩溃 [英] Silverlight 5 - Debugging npctrl.dll crash

查看:13
本文介绍了Silverlight 5 - 调试 npctrl.dll 崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一个非常令人沮丧的 Silverlight 插件崩溃,它同时影响了 IE 和 firefox.

I'm getting a really frustrating silverlight plugin crash which affects both IE and firefox.

事件日志中的错误是:

Faulting application name: iexplore.exe, version: 9.0.8112.16421, time stamp: 0x4d76255d
Faulting module name: npctrl.dll, version: 5.0.61118.0, time stamp: 0x4ec5fc64
Exception code: 0xc0000094
Fault offset: 0x0001d720
Faulting process id: 0x434
Faulting application start time: 0x01ccf0b878b55ca7
Faulting application path: C:Program Files (x86)Internet Exploreriexplore.exe
Faulting module path: c:Program Files (x86)Microsoft Silverlight5.0.61118.0
pctrl.dll
Report Id: bd79af3d-5cab-11e1-8948-000c29de3e25

我已经在异常期间附加了 WinDbg 以获得更多信息:

I've gotten as far as attaching WinDbg during the exception to get a little bit more information:

(17e4.13f8): Break instruction exception - code 80000003 (first chance)
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:WindowsSYSTEM32
tdll.dll - 
ntdll!DbgBreakPoint:
00000000`77810530 cc              int     3
0:029> g
(17e4.1790): Integer divide-by-zero - code c0000094 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for NPCTRL.dll     - 
NPCTRL+0x1d720:
7b59d720 f7f1            div     eax,ecx

好的,ntdll.dll 被零除了.我真的不知道如何进一步调试.我已经尝试查看一些解释如何操作的文章 - 但我认为我受到了限制,因为 ntdll.dll 没有可用的符号?

Ok, so ntdll.dll is dividing by zero. I really have no idea how I can debug further. I've tried viewing some of the articles which explain how - but I think I'm limited based on the fact that there are no symbols available for ntdll.dll?

如何缩小导致此错误的代码部分的范围?

How can I narrow down what part of my code is leading to this error?

推荐答案

经过数小时的调试,我能够在一个小项目中重现该问题.只需创建一个启用 Silverlight 的 Web 服务",然后引用它.然后切换到使用客户端 http 堆栈:

After hours of debugging, I was able to replicate the problem in a small project. Just create a 'silverlight enabled web service', and reference it. Then switch over to using the client http stack:

WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);

在我的机器(以及同事)上调用该服务大约有 10-15% 的机会因 ntdll.dll 错误而崩溃.

Calling the service on my machine (and a coworkers as well) has about a 10-15% chance of crashing with the ntdll.dll error.

我找到了两种方法来缓解这个问题.

I found two ways to mitigate this problem.

1) 停止使用客户端网络堆栈.浏览器堆栈似乎从未发生过这个问题

1) Stop using the client networking stack. The problem never seems to happen with the browser stack

2) 在 VMWare 之外访问 Silverlight 应用程序.该问题似乎仅发生在虚拟机内.感谢 RobSiklos 解决这个问题.

2) Access the silverlight application outside of VMWare. The problem seems to only happen from within a virtual machine. Thanks to RobSiklos for figuring this out.

希望这对某人有所帮助.

Hope this helps someone.

这篇关于Silverlight 5 - 调试 npctrl.dll 崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆