अनुप्रयोग ".NET रनटाइम में आंतरिक त्रुटि" के साथ क्रैश


112

हमारे पास .NET 4.0 के विरूद्ध लिखा गया एक आवेदन है, जो सप्ताहांत में दुर्घटनाग्रस्त हो गया, जिसमें निम्नलिखित संदेश को ईवेंट लॉग में रखा गया है:

आवेदन: PnrRetrieverService.exe फ्रेमवर्क संस्करण: v4.0.30319
विवरण: IP 791F9AAA (79140000) पर .NET रनटाइम में एक आंतरिक त्रुटि के कारण प्रक्रिया को समाप्त कर दिया गया था जिसमें निकास कोड 801850506 था।

यह एक Windows Server 2003 R2 मानक संस्करण बॉक्स पर है। इस त्रुटि को देखते हुए कुछ भी गलत नहीं हुआ है। उदाहरण के लिए, यह वीएस स्टूडियो में नहीं हो रहा है, बल्कि एक उत्पादन बॉक्स पर है; जब इस सेवा को फिर से शुरू किया गया, तो इसे और कोई समस्या नहीं हुई।

.NET रनटाइम में बग का निदान कैसे किया जाता है?


1
अगर यह पहली बार हुआ है तो यह त्रुटि हुई है, तो मैं पिछले कुछ दिनों में कुछ भी बदलकर एक सप्ताह में बदलूंगा।
टोनी अब्राम्स

जवाबों:


121

निकास कोड 80131506 के साथ

यह एक बुरा एक है, ExecutionEngineException। .NET 4.0 से शुरू होकर, यह अपवाद प्रोग्राम को तुरंत समाप्त कर देता है। सामान्य कारण कचरे के ढेर के एकत्र होने की स्थिति का भ्रष्टाचार है। जो बदले में अनवांटेड कोड के कारण होता है। कोड में सटीक स्थान जिस पर यह अपवाद उठाया गया है वह सहायक नहीं है, नुकसान का पता चलने से पहले भ्रष्टाचार आमतौर पर अच्छी तरह से होता है।

इसका सटीक कारण ढूंढना मुश्किल हो रहा है। आपकी सेवा का उपयोग करने वाले किसी भी अप्रबंधित कोड की समीक्षा करें। स्पष्ट पर्यावरणीय समस्या होने पर संदिग्ध उम्मीदवार, दुर्भावनापूर्ण मैलवेयर स्कैनर कुख्यात हैं। यदि यह बहुत खराब तरीके से दोहराता है तो सॉफ्ट रैम त्रुटियों जैसी हार्डवेयर समस्याओं पर संदेह करता है।


3
मुझे SQL CE 3.5 के ढेर को कम करने, ntdll.dll और .NET रनटाइम त्रुटियों में अपवाद के कारण समस्याएं हैं।
फिल

4
वे SDK हेडर फ़ाइल CorError.h
हंस

2
आपको कैसे पता चला कि वे CorError.h में सूचीबद्ध थे ??
येन्हो

6
इस त्रुटि का उपयोग करें। microsoft.com/en-au/download/details.aspx?id=985 यह जानने के लिए कि हेक्स त्रुटि कोड जैसे कि 80131506 का अर्थ क्या है और उनमें कौन सी हेडर फ़ाइल शामिल है।
जेरेमी थॉम्पसन

2
@ हंसपसंद मुझे लगता है कि सवाल यह था कि 'दुनिया में मौजूद सभी फाइलों में से एक था, आपको कैसे पता चला कि CorError.h देखने के लिए एक सार्थक फाइल थी'?
बेकर

41

X64 .Net 4 पर कचरा संग्रह के समवर्ती कार्यान्वयन में एक बग निम्न Microsoft KB प्रविष्टि में कहा गया है:

ExecutionEngineException कचरा संग्रह के दौरान होती है

आपको पहले यह सुनिश्चित करने के लिए एक गहरी minidump अन्वेषण करना चाहिए कि कचरा संग्रह के दौरान समस्या उत्पन्न हुई।

मिनीडंप स्थान आमतौर पर क्रैश लॉग के बाद इवेंट लॉग में Windows त्रुटि रिपोर्टिंग प्रविष्टि में पाया जा सकता है। फिर, WinDbg के साथ मज़े करो!

<gcConcurrent/>समवर्ती तत्व (.NET 4 और बाद में) पृष्ठभूमि कचरा संग्रह को अक्षम करने के लिए कॉन्फ़िगरेशन तत्व के उपयोग पर नवीनतम प्रलेखन , यहां पाया जा सकता है


इस टिप्पणी के लिए धन्यवाद - यह एक समस्या का समाधान था जो मैंने लंबे समय से किया है!
लेनिएप

1
आप एक जीवन रक्षक हो, यह हमारे लिए मुद्दा था। एक तरफ के रूप में, आप विज़ुअल स्टूडियो में मिनीडंप फ़ाइल भी खोल सकते हैं, यदि आपको ज़रूरत है तो प्रतीक पथ सेट करें और फिर डीबग करें। इसने हमें बताया कि त्रुटि clr.dll पर होती है! WKS :: gc_heap :: mark_object_simple ()। मुझे यकीन है कि WinDbg बहुत शक्तिशाली है, लेकिन यदि आप सिर्फ त्रुटि के स्रोत का सत्यापन कर रहे हैं, तो वीएस का उपयोग करना आपको पर्याप्त बता सकता है।
टिम

एप्लिकेशन क्रैश हो गया लेकिन मुझे C: \ Temp \ CrashDump फ़ोल्डर में कोई भी मिनी डंप नहीं मिला। वहाँ कुछ अन्य क्रैश डंप हैं, और हम क्रैश दिनों से डंप का पता लगा सकते हैं। क्या आप जानते हैं कि कोई दुर्घटना क्यों नहीं होती? त्रुटि संदेश और निकास कोड बिल्कुल समान हैं।
जेफरी झाओ

यह वही है जो मैं देख रहा था ... ऐप क्रैश इवेंट में एक निर्देश सूचक था, जो बिना डंप के मेरे लिए बेकार था। बाद की घटनाओं को देखने के लिए कभी नहीं सोचा। धन्यवाद!
laindir

1
उसी स्थिति में दूसरों के लिए, क्रैश पर एक पूर्ण ढेर डंप करने के लिए Windows त्रुटि रिपोर्टिंग को कॉन्फ़िगर करने के लिए उपयोगी हो सकता है: msdn.microsoft.com/en-us/library/windows/desktop/…
laindir

9

मैंने .NET रनटाइम में "आंतरिक त्रुटियों" का अनुभव किया है जो मेरे कोड में बग के कारण हुआ; ऐसा मत सोचो कि सिर्फ इसलिए कि .NET रनटाइम में यह "आंतरिक त्रुटि" थी कि मूल कारण के रूप में आपके कोड में कोई बग नहीं है। हमेशा किसी और को दोष देने से पहले हमेशा अपने कोड को हमेशा दोष दें।

उम्मीद है कि आपके पास लॉगिंग और अपवाद / स्टैक ट्रेस जानकारी है, जिससे आपको यह पता चल सके कि दुर्घटना शुरू होने से पहले, या आप सिस्टम की स्थिति को कैसे दोहरा सकते हैं।


7

Google से यहां पहुंचने वालों के लिए, मैं अंततः इस SO प्रश्न पर आया हूं , और इस विशिष्ट उत्तर ने मेरी समस्या हल कर दी है। मैंने support.microsoft.com पर लाइव चैट के माध्यम से Microsoft से हॉटफ़िक्स के लिए संपर्क किया है और उन्होंने मुझे ईमेल द्वारा हॉटफिक्स का लिंक भेजा है।


5

कई वर्षों के अनुप्रयोगों में इस समस्या के साथ कुश्ती करने के बाद, ऐसा प्रतीत होता है कि Microsoft ने इसे .NET .NET CLR में बग के रूप में स्वीकार कर लिया है। http://support.microsoft.com/kb/2640103

मैं पहले से "फिक्सिंग" कर रहा था ताकि सर्वर मोड में चलने के लिए कचरा कलेक्टर को मजबूर करके (gcServer enable = "true" app.config में) जैसा कि माइक्रोसॉफ्ट आर्टिकल में थिंक बिफोर कोडिंग द्वारा वर्णित है। यह सार में संग्रह के दौरान सभी थ्रेड्स को मजबूर करता है, ताकि संग्रह के दौरान अन्य थ्रेड्स की संभावना को हटाकर मेमोरी को जीसी द्वारा हेरफेर किया जा सके। मुझे यह जानकर खुशी हुई कि मेरे कोड में "बग" के लिए खोज करने के मेरे वर्षों या अन्य 3 पार्टी अप्रबंधित पुस्तकालयों केवल बेकार थे क्योंकि बग Microsoft के कोड में निहित था, मेरा नहीं।


1
आपके द्वारा प्राप्त HotFix फ़ाइलों की संस्करण संख्या क्या है? KB में सूचीबद्ध संस्करण संख्या 4.0.30319.526 है लेकिन मेरे पास पहले से 4.0.30319.18052 है। क्या हॉटफ़िक्स की अभी भी ज़रूरत है या इसे विंडोज अपडेट में रोल किया गया है?
स्वचालित करें

1
जब मैं HotFix exe चलाता हूं तो मुझे "KB2640103 लागू नहीं होता है, या आपके कंप्यूटर पर किसी अन्य शर्त द्वारा अवरुद्ध किया जाता है।"
स्वचालित करें


3

मेरे .NET 4 कोड के नवीनतम निर्माण के साथ WinXP बॉक्स पर एक ही सटीक त्रुटि थी। पिछले बिल्ड की जाँच की - अब वे भी दुर्घटना! ठीक है, तो यह मैं नहीं :)। यहाँ कोई सुझाव / ऊपर मदद नहीं की।

बहुत अधिक हालिया (2018-05-09) एक ही समस्या की रिपोर्ट: एक्जिट कोड 80131506 के साथ आवेदन क्रैश

एक : हम एक समान त्रुटि प्राप्त कर रहे थे, लेकिन हमें विश्वास है कि हमारा कारण Citrix मेमोरी ऑप्टिमाइज़र द्वारा था।
रिज़ॉल्यूशन होस्ट (ओं) पर जहां मूल समस्या उत्पन्न हो रही थी, उस पर .Net कोर लाइब्रेरीज़ के पुनर्जनन को बाध्य करना था:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe update /force

मूल कारण अभी भी अज्ञात है (मशीन को अपडेट नहीं किया जा रहा है और इसका बहुत कम उपयोग है), लेकिन इसने मेरे लिए ऐसा किया !


2

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

इवेंट लॉग में मैंने यह त्रुटि देखी:

एप्लिकेशन पॉपअप: विंडोज - वर्चुअल मेमोरी न्यूनतम बहुत कम: वर्चुअल मेमोरी पर आपका सिस्टम कम है। विंडोज़ आपकी वर्चुअल मेमोरी पेजिंग फ़ाइल का आकार बढ़ा रही है। इस प्रक्रिया के दौरान, कुछ अनुप्रयोगों के लिए मेमोरी अनुरोध अस्वीकार किए जा सकते हैं।

और पिछली त्रुटि:

C: डिस्क क्षमता पर या निकट है। आपको कुछ फ़ाइलों को हटाने की आवश्यकता हो सकती है।


1

मेरे मामले में समस्या एक C ++ / CLI लाइब्रेरी थी जिसमें NtQuerySystemInformation के लिए एक कॉल थी ; कभी-कभी किसी कारण से (और रहस्यमय परिस्थितियों में) ), जब इसे सीएलआर हीप कहा जाता था, भ्रष्ट हो गया और एप्लिकेशन क्रैश हो गया।

मैंने HeapCreate के साथ बनाई गई "कस्टम हीप" का उपयोग करके समस्या का समाधान किया है और उस फ़ंक्शन द्वारा उपयोग किए गए बफ़र्स को आवंटित किया है।


1

मुझे यकीन नहीं है कि यह हर किसी की मदद कर सकता है, लेकिन मैं दौड़कर इसे प्राप्त कर सकता हूं

devenv.exe /ResetSettings 

... रास्ते में {Visual_Studio_root}\Common7\Ide

मुझे इवेंट लॉग में निम्नलिखित त्रुटियां थीं और वी.एस. बस दुर्घटनाग्रस्त हो गया था और हर समय पुनः आरंभ हो रहा था:

Faulting application name: devenv.exe, version: 14.0.25123.0, time stamp: 0x56f22f32
Faulting module name: clr.dll, version: 4.7.2115.0, time stamp: 0x59af88f2
Exception code: 0xc0000005
Fault offset: 0x0015f90e
Faulting process id: 0x3a7c
Faulting application start time: 0x01d353463eaf0c36
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: a232f984-6e80-4f61-9003-e18a035c8f93
Faulting package full name: 
Faulting package-relative application ID: 

इसने मेरे लिए भी काम किया। संदर्भ: मैंने एक मध्यम आकार के समाधान (~ 25 परियोजनाओं) को .NET कोर एसडीके में बदल दिया था, जो लगभग खाली वेब एप्लिकेशन प्रोजेक्ट द्वारा सामने आया था जो रूपांतरण से पहले पुराने WAP को बदल देता था। जाहिरा तौर पर नई परियोजना में IISExpress की उम्मीदों के साथ कुछ सुस्त सेटिंग्स टकरा रही थीं।
टॉमस अचान

1

मेरे मामले में यह समस्या मेरे web.config में डुप्लिकेट बाइंडिंग रीडायरेक्ट के कारण थी। अधिक जानकारी यहाँ

मुझे लगता है कि यह NuGet बाइंडिंग पुनर्निर्देश को संशोधित करने के कारण था, लेकिन उदाहरण के लिए यह इस तरह दिख रहा था:

  <dependentAssembly>
    <assemblyIdentity name="Lucene.Net" publicKeyToken="85089178b9ac3181"/>
    <bindingRedirect oldVersion="0.0.0.0-2.9.4.0" newVersion="3.0.3.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
    <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Lucene.Net" publicKeyToken="85089178b9ac3181"/>
    <bindingRedirect oldVersion="0.0.0.0-2.9.4.0" newVersion="3.0.3.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
    <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0"/>
  </dependentAssembly>

सभी नकलचियों को हटाकर समस्या का समाधान किया गया।


0

मेरे मामले में SAP Business One 9.1 एप्लिकेशन में लॉग इन करते समय यह त्रुटि हुई। विंडोज घटनाओं में मुझे ओपी द्वारा बताए गए एक के अलावा एक और त्रुटि घटना भी मिल सकती है:

Nome dell'applicazione che ha generato l'errore: SAP Business One.exe, versione: 9.10.160.0, timestamp: 0x551ad316
Nome del modulo che ha generato l'errore: clr.dll, versione: 4.0.30319.34014, timestamp: 0x52e0b784
Codice eccezione: 0xc0000005
Offset errore 0x00029f55
ID processo che ha generato l'errore: 0x1d7c
Ora di avvio dell'applicazione che ha generato l'errore: 0x01d0e6f4fa626e78
Percorso dell'applicazione che ha generato l'errore: C:\Program Files (x86)\SAP\SAP Business One\SAP Business One.exe
Percorso del modulo che ha generato l'errore: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
ID segnalazione: 3fd8e0e7-52e8-11e5-827f-74d435a9d02c
Nome completo pacchetto che ha generato l'errore: 
ID applicazione relativo al pacchetto che ha generato l'errore: 

मशीन विंडोज 8.1 चलाती है, जिसमें .NET फ्रेमवर्क 4.0 स्थापित है और 4.5 संस्करण के बिना है। जैसा कि इंटरनेट से लगता था कि यह .NET 4 में एक बग भी हो सकता है, मैंने .NET फ्रेमवर्क 4.5.2 को स्थापित करने की कोशिश की और मैंने इस मुद्दे को हल किया।


0

फ्रेमवर्क संस्करण: v4.0.30319 विवरण: एक अनहेल्दी अपवाद के कारण प्रक्रिया को समाप्त कर दिया गया था। अपवाद जानकारी: System.Reflection.TargetInvocationException

मुझे इस त्रुटि का सामना करना पड़ा है, कुछ पीसी पर एप्लिकेशन ठीक काम कर रहा था और कुछ पीसी पर उपरोक्त त्रुटि दे रहा था। मैं फ्रेमवर्क की स्थापना रद्द करता हूं 4.5 और इस समस्या को हल करने के लिए फिर से स्थापित करता हूं।

चीयर।


0

यह फाइनल में होने वाला एक अपवाद हो सकता है। यदि आप ~ कक्षा का पैटर्न कर रहे हैं () {निपटाना (झूठा); } एक संयुक्त राष्ट्र के प्रबंधित संसाधन के रूप में आप क्या निस्तारण कर रहे हैं, इसकी जांच करें। बस एक कोशिश करो .. वहाँ और तुम ठीक होना चाहिए।

हमें यह समस्या मिली क्योंकि हमें बिना किसी लॉग के यह रहस्यमय विफलता मिली थी। हमने "शून्य निपटान (बूल डिस्पोज़िंग)" का उपयोग करने की सामान्य रूप से अनुशंसित प्रतिमान किया था।

फाइनली के बारे में इस सवाल के जवाब को देखते हुए हमें एक संभावित स्थान मिला जहां अप्रबंधित संसाधनों का निपटान एक अपवाद फेंक सकता है।

यह कहीं बाहर निकलता है कि हमने ऑब्जेक्ट को ठीक से डिस्पोज नहीं किया है, इस प्रकार अंतिम रूप से अप्रबंधित संसाधनों के द्विध्रुवीय पर कब्जा कर लिया और इस प्रकार एक अपवाद हुआ।

इस मामले में काफ्का रेस्ट एपीआई का उपयोग क्लाइंट को काफ्का से साफ करने के लिए किया गया था। ऐसा लगता है कि इसने कुछ बिंदु पर अपवाद को फेंक दिया, फिर यह मुद्दा घटित हुआ।


0

मेरे मामले में समस्या " क्लासिक asp.net परियोजनाओं में .NET मानक पुस्तकालय " और इन दो मुद्दों से संबंधित थी

https://github.com/dotnet/standard/issues/873

https://github.com/App-vNext/Polly/issues/628

और पोली v6 के लिए डाउनग्रेड करना इसे वर्कअराउंड करने के लिए पर्याप्त था


0

मुझे कभी नहीं लगा कि यह मेरे लिए क्यों हो रहा है। यह मेरे अनुप्रयोगों में से एक के लिए लगातार प्रतिलिपि प्रस्तुत करने योग्य था, लेकिन बस रिबूट करने के बाद चला गया।

मैं .net-4.8 के साथ विंडोज 2004 बिल्ड 19582.1001 (इनसाइडर प्रिव्यू) चला रहा हूं और मुझे भी आश्चर्य नहीं होगा अगर यह किसी हार्डवेयर मेमोरी एरर जैसी चीज के कारण हो। इसके अलावा, मेरा आवेदन कुछ अप्रबंधित कोड को लोड करता है और इसे इनिशियलाइज़ करता है, इसलिए मैं यह साबित नहीं कर सकता कि दुर्घटना उस से नहीं हुई।


-1

हर 5-10 मिनट में मेरा एप्लिकेशन पूल इस एग्जिट कोड के साथ क्रैश होता रहा। मैं कचरा कलेक्टर के आपके विश्वास को बर्बाद नहीं करना चाहता, लेकिन निम्नलिखित समाधान ने मेरे लिए काम किया।

मैंने एक नौकरी जोड़ी जो कॉल करती है GC.GetTotalMemory(true) हर मिनट करता है।

मुझे लगता है कि, किसी कारण से, जीसी स्वचालित रूप से मेमोरी का निरीक्षण नहीं कर रहा है जो कि उपयोग किए जाने वाले उच्च डिस्पोजेबल वस्तुओं के लिए अक्सर पर्याप्त होता है।

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