आपको त्रुटि का निदान कैसे करना चाहिए SEHException - बाहरी घटक ने एक अपवाद फेंक दिया है


86

जब भी कोई उपयोगकर्ता इस तरह की त्रुटि की रिपोर्ट करता है

System.Runtime.InteropServices.SEHException - बाहरी घटक ने एक अपवाद फेंक दिया है?

क्या ऐसा कुछ है जो मैं एक प्रोग्रामर के रूप में कर सकता हूं, इसका कारण क्या है?

परिदृश्य: एक उपयोगकर्ता (मेरी कंपनी ने लिखा एक कार्यक्रम का उपयोग करके) ने इस त्रुटि की सूचना दी है। यह एक बंद त्रुटि हो सकता है या नहीं हो सकता है। उन्होंने उल्लेख किया कि पिछले महीने में, कंप्यूटर ने दो बार 'काम करना बंद' कर दिया है। मैंने अनुभव से सीखा है, इस विवरण को शाब्दिक रूप से नहीं लेना, क्योंकि इसका आमतौर पर मतलब है कि कंप्यूटर से संबंधित कोई व्यक्ति अपेक्षा के अनुरूप काम नहीं कर रहा है। वे मुझे अधिक विवरण देने में असमर्थ थे और मुझे कोई लॉग इन त्रुटियां नहीं मिलीं। इसलिए यह त्रुटि हो भी सकती है और नहीं भी।

स्टैक-ट्रेस से, वास्तविक त्रुटि तब थी जब एक वर्ग का निर्माण किया गया था जो सीधे किसी भी इंटरोप कोड को कॉल नहीं करता है, लेकिन शायद इस तथ्य से जटिल है कि ऑब्जेक्ट एक सूची का हिस्सा हो सकता है जो डेटासाउंड से एक DevExpress ग्रिड है।

त्रुटि को एक अखंड अपवाद अपवाद द्वारा 'पकड़ा' गया था जो सामान्य रूप से कार्यक्रम को बंद कर देगा, लेकिन इसे अनदेखा करने और जारी रखने का विकल्प है। यदि वे त्रुटि को अनदेखा करने का विकल्प चुनते हैं, तो कार्यक्रम काम करना जारी रखता है, लेकिन जब यह दिनचर्या अगली बार चलती थी, तब त्रुटि होती है। हालाँकि यह हमारे एप्लिकेशन को बंद करने और पुनः आरंभ करने के बाद दोबारा नहीं हुआ।

विचाराधीन कंप्यूटर पर जोर नहीं दिया गया था। यह विस्टा बिज़नेस चला रहा है, इसमें 2GB मेमोरी है और टास्क मैनेजर के अनुसार केवल आधे के बारे में हमारे आवेदन के साथ लगभग 200Mb का उपयोग कर रहा था।

एक अन्य जानकारी है जो प्रासंगिक हो सकती है या नहीं। इसी कार्यक्रम का एक अन्य खंड एक तीसरे पक्ष के घटक का उपयोग करता है जो प्रभावी रूप से एक देशी dll के आसपास डॉटनेट आवरण है और इस घटक का एक ज्ञात मुद्दा है जहां कभी-कभार, आपको एक

रीड ऑर राइट प्रोटेक्टड मेमोरी के लिए प्रयास किया गया। यह अक्सर एक संकेत है कि अन्य स्मृति भ्रष्ट है

घटक निर्माताओं का कहना है कि यह उनके घटक के नवीनतम संस्करण में तय किया गया है जिसे हम इन-हाउस उपयोग कर रहे हैं, लेकिन यह अभी तक ग्राहक को नहीं दिया गया है।

यह देखते हुए कि त्रुटि के परिणाम कम हैं (कोई काम नहीं खोया गया है और कार्यक्रम को फिर से शुरू करना और जहां वे केवल एक मिनट का समय ले रहे हैं, वहीं वापस मिलना) और यह देखते हुए कि ग्राहक को जल्द ही एक नया संस्करण प्राप्त होगा (अपडेट किए गए तीसरे के साथ) पार्टी घटक), मैं स्पष्ट रूप से अपनी उंगलियों को पार कर सकता हूं और आशा करता हूं कि त्रुटि फिर से नहीं होगी।

लेकिन क्या कुछ और है जो मैं कर सकता हूं?

जवाबों:


28

हाँ। यह त्रुटि एक संरचित अपवाद है जिसे .NET त्रुटि में मैप नहीं किया गया था। यह शायद आपका डेटाग्रिड मैपिंग है जो बिना किसी अपवाद के एक देशी अपवाद को फेंक रहा है।

आप यह बता सकते हैं कि बाहरी अपवाद को देखकर क्या अपवाद हो रहा है । ErorCode संपत्ति। मैं आपके स्टैक ट्रेस की जाँच करूँगा, और अगर यह DevExpress ग्रिड से जुड़ा हुआ है, तो उन्हें समस्या की रिपोर्ट करें।


1
StackTrace ने कहीं भी DevExpress का उल्लेख नहीं किया, लेकिन सिर्फ मेरी कक्षा। यह देखने के लिए जांचना होगा कि ErrorCode क्या था।
sgmoore

उस स्थिति में, यह पता लगाने की कोशिश करें कि त्रुटि संदेश वास्तव में क्या फेंक दिया है।
रीड कोपसे

4
"एक्सटर्नल एक्ससेप्शन.इरोरकोड प्रॉपर्टी को देखकर" - क्या आपके पास कोई संकेत है कि वास्तव में ऐसा कैसे करें? वीएस मुझे दिखाता है "प्रकार का एक अखंड अपवाद 'System.Runtime.InteropServices.SEHException' में हुआ ... dll अतिरिक्त जानकारी: Eine externe Komponente hat eine Ausnahme ausgelöst।", लेकिन इसके अलावा C # अनुप्रयोगों में, कोई लिंक नहीं है। कहीं भी अपवाद वस्तु के "विवरण" को देखने के लिए।
या मैपर

8

मुझे एक SEHException के साथ इसी तरह की समस्या थी जिसे तब फेंक दिया गया था जब मेरे कार्यक्रम ने पहली बार एक देशी dll आवरण का उपयोग किया था। पता चला कि उस आवरण के लिए देशी DLL गायब था। अपवाद इसे सुलझाने में मददगार नहीं था। सभी आवश्यक DLL को लोड करने के दौरान कोई त्रुटि होने पर पृष्ठभूमि में दी गई घोषणा और जाँच में अंत में क्या मदद मिली।


5

यदि आपको इस पोस्ट में वर्णित समस्या है:

asp.net mvc डिबगर सेहगसेप्शन फेंक रहा है

तो समाधान है:

यदि आपके पास ट्रस्टीयर (जैसे तालमेल या कुछ भी) से कोई एप्लिकेशन है, तो बस अपने सिस्टम को अनइंस्टॉल और रिबूट करें, यह ठीक काम करेगा ... इस समाधान को यहां पाया गया:

http://forums.asp.net/t/1704958.aspx/8/10?Re+SEHException+thrown+when+I+run+the+application


3

घटक निर्माताओं का कहना है कि यह उनके घटक के नवीनतम संस्करण में तय किया गया है जिसे हम इन-हाउस उपयोग कर रहे हैं, लेकिन यह अभी तक ग्राहक को दिया गया है।

घटक निर्माता से पूछें कि परीक्षण कैसे करें कि ग्राहक को जो समस्या हो रही है वह समस्या है जो वे कहते हैं कि उन्होंने अपने नवीनतम संस्करण को ग्राहक के लिए अपने नवीनतम संस्करण को तैनात किए बिना / उसके पहले संस्करण में तय किया है।


1

जब यह ऐप एक नेटवर्क शेयर पर रहता है, और डिवाइस (लैपटॉप, टैबलेट, ...) नेटवर्क से डिस्कनेक्ट हो जाता है, तो मैं इस त्रुटि के पार आ गया हूं, जबकि ऐप उपयोग में है। मेरे मामले में, यह एक सरफेस टैबलेट के वायरलेस रेंज से बाहर जाने के कारण था। एक बेहतर WAP स्थापित करने के बाद कोई समस्या नहीं है।


1
अपने कोड और थर्ड पार्टी लाइब्रेरियों, और बस एक ग्राहक वातावरण में, जैसे दूरस्थ स्थान पर पुस्तकालयों के साथ, दोनों तरह के प्रतिबिंब (GetAssemblyName, GetProperty, Activator, इत्यादि) को एक्सेस करते हुए मैं इसे बेतरतीब ढंग से पा रहा था। बहुत सारे सबूत यह .net फ्रेमवर्क बग है।
एंड्री के

एंड्री के: मुझे नहीं लगता कि यह एक .NET समस्या है, मुझे लगता है कि नेटवर्क शेयर पर खोले गए फ़ाइल (ओं) को हैंडल किसी भी तरह खो गए हैं, शायद विंडोज या नेटवर्क समस्या में बग। असेंबली मेमोरी मैप्ड हैं और डिस्क ऑन डिमांड (टाइम बम) में पेज किया जाएगा, संभवतः मेमोरी को कम मेमोरी स्थितियों में भी खारिज किया जा सकता है। यदि खोले गए फ़ाइल हैंडल स्थिर नहीं हैं, तो यह संभवतः धुएं में उड़ जाता है। .NET शायद इसे संभाल सकता था और फ़ाइल को फिर से खोल सकता था (समस्या पर आसानी से), लेकिन यह जटिल हो सकता है।
osexpert

मेरी भी यही समस्या है। मुझे System.Runtime.InteropServices.SEHException (0x80004005) मिलता है जिसमें कोई स्टैक ट्रेस नहीं है। यह एक TargetInvocationException का इनर एक्सेप्शन है। TargetInvocationException में स्टैक ट्रेस है, लेकिन यह मेरे लिए कोई मतलब नहीं है क्योंकि यह मुख्य या Application.Run से आया प्रतीत होता है। यह बहुत बेतरतीब होता है, ज्यादातर शाम को रात में। मुझे लगता है कि केवल "समाधान" नेटवर्क ड्राइव से नहीं चलना है: - | शायद मैं एक जाँच जोड़ता हूँ जो इस परिदृश्य को अवरुद्ध कर सकती है: stackoverflow.com/questions/8633680/…
osexpert

0

बस एक अन्य जानकारी ... उस समस्या को आज विंडोज 2012 R2 x 64 टीएस सिस्टम पर लागू किया गया था, जहां एप्लिकेशन को एक अनक / नेटवर्क पथ से शुरू किया गया था। समस्या सभी टर्मिनल सर्वर उपयोगकर्ताओं के लिए एक अनुप्रयोग के लिए उत्पन्न हुई। आवेदन के बाद स्थानीय स्तर पर समस्याओं के बिना काम किया। एक रिबूट के बाद यह फिर से काम करना शुरू कर दिया - SEHException का फेंका कंस्ट्रक्टर इनिट और TargetInvocationException था


0

मेरी मशीन विन्यास:

ऑपरेटिंग सिस्टम: विंडोज 10 संस्करण 1703 (x64)

विजुअल स्टूडियो 2017 कम्युनिटी एडिशन में अपने C # .Net प्रोजेक्ट को डीबग करते समय मुझे इस त्रुटि का सामना करना पड़ा। मैं रन-टाइम पर लोड किए गए C ++ असेंबली पर p / invoke करके एक मूल विधि कह रहा था। मुझे ओपी द्वारा रिपोर्ट की गई उसी त्रुटि का सामना करना पड़ा।

मुझे एहसास हुआ कि विज़ुअल स्टूडियो को एक उपयोगकर्ता खाते के साथ लॉन्च किया गया था जो मशीन पर व्यवस्थापक नहीं था। फिर मैंने एक अलग उपयोगकर्ता खाते के तहत विज़ुअल स्टूडियो को फिर से लॉन्च किया जो मशीन पर एक व्यवस्थापक था। बस इतना ही। मेरी समस्या हल हो गई और मुझे इस मुद्दे पर फिर से सामना नहीं करना पड़ा।

एक बात ध्यान देने वाली है कि C ++ असेंबली में जिस विधि को लागू किया जा रहा था, वह रजिस्ट्री में कुछ चीजें लिखने वाली थी। मैं कुछ आरसीए करने के लिए C ++ कोड डिबगिंग नहीं गया था, लेकिन मुझे संभावना है कि पूरी तरह से विफल हो रहा था क्योंकि Windows 10 ऑपरेटिंग सिस्टम में रजिस्ट्री लिखने के लिए प्रशासनिक विशेषाधिकार आवश्यक हैं। इसलिए पहले जब विजुअल स्टूडियो एक उपयोगकर्ता खाते के तहत चल रहा था जिसमें मशीन पर प्रशासनिक विशेषाधिकार नहीं थे, तो देशी कॉल विफल हो रहे थे।


0

मुझे यह त्रुटि तब मिली जब मैं स्थापित कर रहे थे inememory कैशिंग पर इकाई परीक्षण चला रहा था। इससे कैश की बाढ़ आ गई। कैश को अमान्य करने और VM को पुनरारंभ करने के बाद, इसने ठीक काम किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.