मेरे पास एसी # (.net 4.0) विनफॉर्म एप्लिकेशन है जो एक एक्सपी एसपी 3 पर दिन में 8 घंटे, हर दिन बहुत अधिक चलता है। यह ज्यादातर समय ठीक काम करता है , कभी-कभी महीनों के लिए। फिर ऐसा लगता है कि एक खराब जादू में, और दिन में एक बार, लगातार कुछ दिनों के लिए, कई बार, एक प्रवेश उल्लंघन अपवाद आता है। मैंने डंप फ़ाइल को देखने की कोशिश की है, और स्टैक को देखने के लिए एक्सेस उल्लंघन अपवाद को पकड़ लिया है; किसी भी तरह, मैं बहुत ज्यादा एक ही ढेर मिलती है:एक्सेस उल्लंघन: संरक्षित मेमोरी को पढ़ने या लिखने का प्रयास
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
at System.Windows.Forms.ToolTip.WndProc(Message& msg)
at System.Windows.Forms.ToolTip.ToolTipNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
मैं इस फिक्सिंग क्योंकि स्टैक ट्रेस बहुत उपयोगी नहीं है एक बहुत ही मुश्किल समय हो रही है। सबसे पहले, मुझे यह भी यकीन नहीं है कि क्या मैं स्टैक ट्रेस पर भरोसा कर सकता हूं: क्या प्रोग्राम वहां जाता है (ऐसा लगता है कि यह कुछ टूलटिप प्रदर्शित करने की कोशिश कर रहा है, जो निश्चित रूप से संभव है) क्योंकि स्मृति पहले से ही दूषित है, या यदि प्रोग्राम वास्तव में वैध होना चाहिए वहां, लेकिन कुछ डेटा मेमोरी दूषित है। दूसरा, यह मानते हुए कि स्टैक ट्रेस सही और भरोसेमंद है, मुझे यह पता लगाने का कोई तरीका नहीं दिख रहा है कि स्मृति को दूषित कर रहा है ... हम प्रवेश उल्लंघन को ट्रिगर करने के लिए कुछ भी नहीं कर रहे हैं ... एप्लिकेशन लॉग कोई भी नहीं दिखाता है इससे पहले अन्य पकड़े गए अपवाद ... ईवेंट लॉग एक ही समय में प्रवेश उल्लंघन के रूप में कोई प्रविष्टियां नहीं दिखाते हैं ... इस पर निदान करने के तरीके पर कोई संकेत?
अद्यतन 2011-10-11: मैं पहले ही अपवाद को पकड़ रहा हूं, लेकिन आवेदन के आसपास। रुन() विधि। उस समय ऐसा लगता है कि बहुत कुछ करने में बहुत देर हो चुकी है। अगर दोषपूर्ण हार्डवेयर/ड्राइवर के कारण यह अपवाद हो रहा है और यह संकेत नहीं देता है कि एप्लिकेशन की स्मृति दूषित है - क्या कोई और जगह होगी जहां मैं अपवाद पकड़ सकता हूं (और इसे प्रदर्शित करता हूं, लेकिन फिर एप्लिकेशन को जारी रखने दें)?
अपडेट 2012-03-04: मुझे एक बार फिर अपवाद मिला, इस बार काफी मामूली रूप प्रदर्शित करने के बाद (केवल एक टेक्स्टबॉक्स और एक ठीक बटन है)। मैं TextBox.AppendText() का उपयोग कर रहा था। मैं बस एक ही समय में इस comment ब्राउज़ करने के लिए ऐसा हुआ। AppendText() समस्या उत्पन्न कर सकता है? जब 'मूल' पहुंच उल्लंघन होता है, तो वे एक ऐसे फॉर्म को प्रदर्शित करने के बाद खुश होते हैं जिसमें एक Richtextbox होता है जिस पर मैं AppendText() को भी कॉल करता हूं। साज़िश का गहरा जाना!
अपडेट 2012-03-06: मैंने AppendText को हटा दिया और बस टेक्स्टबॉक्स का उपयोग किया। इसके बाद = लेकिन मुझे आज फिर से उल्लंघन उल्लंघन अपवाद मिला। इस प्रकार, AppendText अपराधी प्रतीत नहीं होता है। इसके अलावा, अपवाद एक बार बॉक्स 7 पर चल रहा है, विंडोज 7 चला रहा है। इस प्रकार, ऐसा लगता है कि अपवाद विंडोज XP के लिए विशिष्ट नहीं है, या अन्य कंप्यूटर (जैसे स्मृति समस्या)।
आप अपने अनुप्रयोग में किसी भी PInvoke कर रहे हैं? यदि आप हैं, तो यह देखने के लिए लायक हो सकता है कि कोड की चोटी (यदि संभव हो) यह देखने के लिए कि क्या यह कोई दुविधा है या नहीं। इसके अलावा इस http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/6adca20b-649f-41a4-8fa1-09534882d76c/ विशेष रूप से "जेम्स Kovac" और "DejanR" से जवाब पर एक नजर है । डीबगिंग अनुकूलन के साथ कुछ करने के लिए हो सकता है। – Raghu