हमारे पास यह बग है जो रिलीज बिल्ड के लिए केवल 30% समय दिखाई देता है। खुलने WinDbg में क्रैश डम्प (कतरना उत्पादन "-v का विश्लेषण!"):.NET डीबगिंग - सिस्टम। थ्रेडिंग। एक्सेक्यूशन कॉन्टेक्स्ट.रुन ट्रीकोड
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() वास्तव में समस्या नहीं है ... लेकिन..मैं अटक गया हूँ।
धन्यवाद! (मैं वास्तव में यहाँ groping हूँ)।
जैसा कि किसी ने अभी तक एक घंटे के बाद उत्तर नहीं दिया है, मैं सुझाव दूंगा कि आप किसी को http://blogs.msdn.com/ntdebugging/ पर पहुंचने का प्रयास करेंगे। इसके लायक होने के लिए, मुझे लगता है कि एक प्रक्रिया के लिए सूचक को runTryCode में पारित किया जाना चाहिए। किसी कारण से, वह सूचक स्कैम्बल हो गया (अधिलेखित?) और इसमें 000 ... 4 है। शायद आप यह पता लगा सकते हैं कि किस प्रक्रिया को बुलाया जाना चाहिए था और यह पता लगाने के लिए कि उस विशिष्ट पते को किसने अधिलेखित किया है, वहां से काम करना चाहिए। –
क्या आपको हमेशा यह सटीक क्रैश डंप मिलता है? डिबगिंग एक्सेस उल्लंघनों के साथ समस्या का एक हिस्सा यह है कि वे वास्तव में किसी अन्य कोड के साइड इफेक्ट्स हो सकते हैं जो * क्रैश नहीं हुआ था, लेकिन जो कुछ भी * दुर्घटनाग्रस्त हो गया था (आमतौर पर अंतःक्रियात्मक दुर्घटनाओं और असंगतता से प्रमाणित) ढेर निशान)। – Aaronaught