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

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

问题描述

我得到一个很无奈的Silverlight插件崩溃,影响IE和火狐

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

从事件日志中的错误是:

The error from the event log is:

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 Explorer\iexplore.exe
Faulting module path: c:\Program Files (x86)\Microsoft Silverlight\5.0.61118.0\npctrl.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:\Windows\SYSTEM32\ntdll.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.

希望这可以帮助别人。

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

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