moo*_*ogs 5 .net debugging exception
我们有这个错误,只有30%的时间用于Release版本.在WinDbg中打开崩溃转储(剪切"!analyze -v"输出):
FAULTING_IP:
+4
00000000`00000004 ?? ???
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000000004
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000008
Parameter[1]: 0000000000000004
Attempt to execute non-executable address 0000000000000004
ERROR_CODE: (NTSTATUS) 0xc0000005 -
The instruction at 0x%08lx referenced memory at 0x%08lx.
The memory could not be %s.
WRITE_ADDRESS: 0000000000000004
MANAGED_STACK:
(TransitionMU)
0000000024B9E370 000007FEEDA1DD38
mscorlib_ni!
System.Threading.ExecutionContext.runTryCode(System.Object)+0x178
(TransitionUM)
(TransitionMU)
0000000024B9DFB0 000007FF00439010 MyLibrary!DocInfo.IsStatusOK()+0x30
Run Code Online (Sandbox Code Playgroud)
现在,IsStatusOK()只调用PrintSystemJobInfo.Get(),但这似乎甚至没有出现在堆栈中.
关于如何调试这个的任何想法?我确定runTryCode()确实不是问题...但是......我被卡住了.
谢谢!(我真的在这里摸索).
感谢大家!终于想通了。
这里正在进行一些本机互操作,并且 GC 显然正在内存中的一些变量周围移动。这就是对 Interop 方面造成严重破坏的问题。解决方案:使用IntPtr或GCHandle.Alloc()
(诚然,这个答案写得有点仓促,有时间会尝试填写正确的答案)。
归档时间: |
|
查看次数: |
962 次 |
最近记录: |