我們有這個錯誤,只有30%的版本發佈版本。 打開在WinDbg中崩潰轉儲(剪斷輸出「分析-v!」):.NET調試 - System.Threading.ExecutionContext.runTryCode
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
現在,IsStatusOK()只是調用PrintSystemJobInfo.Get(),但這似乎並不甚至會出現在堆棧中。
有關如何調試的任何想法?我確定runTryCode()真的不是問題......但是......我被卡住了。
謝謝! (我真的在這裏摸索)。
由於沒有人在一小時後回答,我建議您嘗試聯繫http://blogs.msdn.com/ntdebugging/上的某人。對於它的價值,我認爲應該將一個指向過程的指針傳遞給runTryCode。出於某種原因,該指針被擾亂(覆蓋?)並且包含000 ... 4。也許你可以找出應該調用的過程,然後從那裏找出誰已經覆蓋了該特定地址。 – 2010-03-18 14:54:22
你總是得到這個確切的崩潰轉儲嗎?調試訪問違規的部分問題是,它們可能實際上是其他代碼的副作用,它們*不會崩潰,而是決定在任何*做*崩潰的內存中亂寫(通常由間歇性崩潰和不一致堆棧痕跡)。 – Aaronaught 2010-03-28 18:14:09