c# - Silverlight 5 - 调试 npctrl.dll 崩溃

标签 c# .net silverlight crash

我遇到了一个非常令人沮丧的 silverlight 插件崩溃,它同时影响 IE 和 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 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 以获得更多信息:

(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 的符号这一事实?

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

最佳答案

经过几个小时的调试,我能够在一个小项目中重现该问题。只需创建一个“支持 silverlight 的 Web 服务”,然后引用它。然后切换到使用客户端 http 堆栈:

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

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

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

1) 停止使用客户端网络栈。这个问题似乎从来没有发生在浏览器堆栈上

2) 在 VMWare 之外访问 silverlight 应用程序。该问题似乎只发生在虚拟机中。感谢 RobSiklos 解决了这个问题。

希望这对某人有帮助。

关于c# - Silverlight 5 - 调试 npctrl.dll 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9382809/

相关文章:

c# - 我应该返回一个空列表还是一个空列表?

c# - C# 中是否有 VB.NET "With"语句?

c# - 获取 ListBox 中的 ListBoxItem

c# - SmtpClient 可扩展性问题(仅运行两个请求)

C# 标题图片

c# - 无法加载文件或程序集 System.Net.Http 版本 4.1.1.0

.net - 格式化 SQL IN 子句的字符串

c# - 使用 MessagingCenter 和标准 .NET 事件处理程序来通知相关方更改有什么区别?

c# - 在客户端运行时更新 Silverlight 应用程序

silverlight - 从 Silverlight WP7 应用程序隐藏平铺文本