Chúng tôi có lỗi này chỉ xuất hiện 30% thời gian cho bản dựng. Mở đổ sụp đổ trong WinDbg (snipped đầu ra "analyze -v!"):.NET Debugging - 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
Bây giờ, IsStatusOK() chỉ gọi PrintSystemJobInfo.Get(), nhưng điều đó dường như không còn xuất hiện trong ngăn xếp.
Bất kỳ ý tưởng nào về cách gỡ lỗi này? Tôi chắc rằng runTryCode() thực sự không phải là vấn đề ... nhưng ... tôi bị kẹt.
Cảm ơn! (Tôi thực sự mò mẫm ở đây).
Vì chưa có ai trả lời sau một giờ, tôi khuyên bạn nên cố gắng liên hệ với ai đó tại http://blogs.msdn.com/ntdebugging/. Đối với những gì nó có giá trị, tôi giả định rằng một con trỏ đến một thủ tục nên được thông qua vào runTryCode. Đối với một số lý do, con trỏ đó đã tranh giành (ghi đè?) Và chứa 000 ... 4. Có lẽ bạn có thể tìm ra quy trình nào nên được gọi và làm việc từ đó để tìm ra ai đã ghi đè địa chỉ cụ thể đó. –
Bạn luôn nhận được kết xuất đổ vỡ chính xác này? Một phần của vấn đề với việc gỡ rối vi phạm quyền truy cập là chúng có thể là tác dụng phụ của một số mã khác * không * bị lỗi nhưng quyết định viết nguệch ngoạc trên mọi bộ nhớ * đã bị lỗi (thường được chứng minh bằng các sự cố không liên tục và không nhất quán) ngăn xếp dấu vết). – Aaronaught