Mik*_*ike 23 .net c# access-violation
我不知道如何调试这个.我有一个完全由托管代码组成的C#程序,在.NET 4.5中运行.运行一段时间后,在一些看似随机的时间,我得到一个错误"mscorlib.dll中发生了'System.AccessViolationException'类型未处理的异常".因为我是从Visual Studio(2012)运行的,所以我点击"break"并显示以下调用堆栈:
mscorlib.dll!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* pOVERLAP) + 0x47 bytes
[Native to Managed Transition]
ntdll.dll!_NtRequestWaitReplyPort@12() + 0xc bytes
kernel32.dll!_ConsoleClientCallServer@16() + 0x4f bytes
kernel32.dll!_GetConsoleLangId@4() + 0x2b bytes
kernel32.dll!_SetTEBLangID@0() + 0xf bytes
KernelBase.dll!_GetModuleHandleForUnicodeString@4() + 0x22 bytes
mdnsNSP.dll!7177aa48()
[Frames below may be incorrect and/or missing, no symbols loaded for mdnsNSP.dll]
mdnsNSP.dll!71775b06()
mdnsNSP.dll!71774ded()
mdnsNSP.dll!71774e8c()
bcryptprimitives.dll!746d1159()
bcryptprimitives.dll!746d1137()
ntdll.dll!_LdrpCallInitRoutine@16() + 0x14 bytes
ntdll.dll!_NtTestAlert@0() + 0xc bytes
ntdll.dll!_NtContinue@8() + 0xc bytes
ntdll.dll!_LdrInitializeThunk@8() + 0x1a bytes
Run Code Online (Sandbox Code Playgroud)
我注意到一个有趣的事情是调用堆栈中没有任何东西是我的代码.
你会建议我用什么策略来找到问题的路线?或者你有没有看到类似的问题并有任何提示?
由于异常似乎不包括我的代码,我不知道要包含什么信息有助于回答问题,但问我是否还有其他任何我应该包括的内容.
由于错误可能与IO相关(因为PerformIOCompletionCallback位于堆栈顶部),因此这是此应用程序执行的典型IO任务列表:
其他说明:
编辑:
根据@Kevin的建议,Mdnsnsp.dll来自Bonjour,我卸载了Bonjour并再次尝试.异常仍然存在,但调用堆栈更清晰:
mscorlib.dll!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* pOVERLAP) + 0x47 bytes
[Native to Managed Transition]
kernel32.dll!@BaseThreadInitThunk@12() + 0x12 bytes
ntdll.dll!___RtlUserThreadStart@8() + 0x27 bytes
ntdll.dll!__RtlUserThreadStart@8() + 0x1b bytes
Run Code Online (Sandbox Code Playgroud)
我假设Bonjour安装程序为网络流量安装了一些良性钩子DLL,但卸载它并没有解决问题.
编辑:
我暂时unsafe
使用较慢的"安全"等价物重新编码了我的所有功能,以消除作为嫌疑人.现在,应用程序中的任何程序集都没有使用不安全的开关进行编译.问题仍然存在.重申一下,我现在在这个应用程序中没有不安全的代码,没有本机代码和P/Invoke调用(在用户代码中),但我仍然遇到AccessViolationException
如上所述.
小智 1
您可以使用 debugdiag 查看导致计算机上出现 AccessViolationException 的原因。为您的进程配置崩溃规则并检查转储和日志文件。我希望您能通过这种方式获得有关该主题的更多信息。另外,请确保您的计算机运行最新的 Windows 更新,因为我遇到了类似的问题,该问题已在 CLR 版本的安全更新中得到解决。
归档时间: |
|
查看次数: |
6757 次 |
最近记录: |