2010-03-18 9 views
5

हमारे पास यह बग है जो रिलीज बिल्ड के लिए केवल 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 हूँ)।

+0

जैसा कि किसी ने अभी तक एक घंटे के बाद उत्तर नहीं दिया है, मैं सुझाव दूंगा कि आप किसी को http://blogs.msdn.com/ntdebugging/ पर पहुंचने का प्रयास करेंगे। इसके लायक होने के लिए, मुझे लगता है कि एक प्रक्रिया के लिए सूचक को runTryCode में पारित किया जाना चाहिए। किसी कारण से, वह सूचक स्कैम्बल हो गया (अधिलेखित?) और इसमें 000 ... 4 है। शायद आप यह पता लगा सकते हैं कि किस प्रक्रिया को बुलाया जाना चाहिए था और यह पता लगाने के लिए कि उस विशिष्ट पते को किसने अधिलेखित किया है, वहां से काम करना चाहिए। –

+0

क्या आपको हमेशा यह सटीक क्रैश डंप मिलता है? डिबगिंग एक्सेस उल्लंघनों के साथ समस्या का एक हिस्सा यह है कि वे वास्तव में किसी अन्य कोड के साइड इफेक्ट्स हो सकते हैं जो * क्रैश नहीं हुआ था, लेकिन जो कुछ भी * दुर्घटनाग्रस्त हो गया था (आमतौर पर अंतःक्रियात्मक दुर्घटनाओं और असंगतता से प्रमाणित) ढेर निशान)। – Aaronaught

उत्तर

0

सभी को धन्यवाद! अंत में यह पता लगाया।

यहां कुछ मूल इंटरऑप चल रहा है और, जीसी स्पष्ट रूप से स्मृति में कुछ चर के चारों ओर घूम रहा है। यह वह है जो इंटरऑप पक्ष पर कहर बरबाद कर रहा है। समाधान: IntPtr या GCHandle.Alloc()

(माना जाता है कि यह उत्तर जल्दबाजी में थोड़ा सा लिखा गया था, मेरे पास समय होने पर उचित उत्तर भरने का प्रयास करेगा)।

+0

मूग्स जो आपने जल्दी में उत्तर लिखा है, क्या आप कृपया उस समाधान पर उचित उत्तर और विवरण लिख सकते हैं जिसे आपने तैनात किया है, आपने इंटिप्टर और जीसीएचंडल का उपयोग कैसे किया। ऑलोक – dbw

0

अंधेरे में एक स्टैब - लेकिन यह संभवतः प्रिंटिंग से संबंधित है, क्योंकि यह एक डोडी प्रिंटर ड्राइवर के कारण हो सकता है?

क्या समस्या विभिन्न मशीनों या केवल विशिष्ट लोगों पर होती है?

0

एक्सेस उल्लंघन मूल कोड से आना चाहिए ताकि या तो नीचे जाने वाले डेटास्ट्रक्चर गलत हैं या परिभाषा के बारे में कुछ हो सकता है। क्या आप मूल कॉल विधियों को पी-इनका करते हैं या अन्य प्रबंधित विधियों को डेटास्ट्रक्चर भेजते हैं जो देशी लोगों को बुलाते हैं?

जैसा कि धागा का उल्लेख किया गया है यह कोड बहुप्रचारित चल रहा है? क्या यह संभव है कि आपके पास थ्रेडिंग समस्या हो, जहां आप मूल कोड से बात करने के लिए उपयोग कर रहे डेटास्ट्रक्चर को अन्य धागे से दूषित कर रहे हैं?

संबंधित मुद्दे