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


144

मुझे उम्मीद है कि कोई मुझे बता सकता है कि इस त्रुटि के कारण क्या हो सकता है:

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

मैं वास्तव में कोड पोस्ट नहीं कर सकता क्योंकि यह त्रुटि एप्लिकेशन के किसी भी यादृच्छिक क्षेत्र में फेंक दी गई लगती है। त्रुटि को फेंकने से पहले आवेदन 12-48 घंटे से कहीं भी चलेगा। कभी-कभी यह एक प्रतीत होता है यादृच्छिक स्थान में बंद हो जाएगा और उपरोक्त त्रुटि को फेंक देगा, अन्य बार संपूर्ण अनुप्रयोग बंद हो जाता है और मुझे एक त्रुटि के साथ एक स्क्रीन मिलती है जो कि "कुछ घातक त्रुटि थी ... की तर्ज पर कुछ कहती है ... यह एक हो सकता है CLR में बग या ... "PInvoke या अन्य गैर प्रासंगिक जानकारी के बारे में कुछ। जब ऐसा होता है तो सभी थ्रेड समाप्त हो जाते हैं और डिबगिंग की कोई जानकारी उपलब्ध नहीं होती है।

संक्षेप में यह वही है जो आवेदन करता है:

यह एक बहु-थ्रेडेड सर्वर अनुप्रयोग है जो पूरी तरह से C # में लिखा गया है। ग्राहक सॉकेट के माध्यम से सर्वर से जुड़ते हैं। सर्वर ग्राहकों के लिए एक आभासी "पर्यावरण" चलाता है जहां वे एक-दूसरे और पर्यावरण के साथ बातचीत कर सकते हैं। यह मेमोरी का काफी कम उपभोग करता है लेकिन मैं इसे लीक नहीं देखता। यह आमतौर पर लगभग 1.5GB की खपत करता है। मुझे नहीं लगता कि इसकी लीक इसलिए हो रही है क्योंकि मेमोरी का उपयोग पूरी तरह से स्थिर रहता है, जिससे एप्लिकेशन चल रहा है। क्लाइंट्स कुछ भी नहीं कर रहे हैं, भले ही पर्यावरण को बनाए रखने के लिए इसका लगातार चलने वाला कोड। यह कोई 3 पार्टी सॉफ्टवेयर या अन्य एपीआई का उपयोग नहीं करता है। इस एप्लिकेशन का उपयोग करने वाले एकमात्र बाहरी संसाधन सॉकेट कनेक्शन और SQL डेटाबेस कनेक्शन हैं। इसके 64 बिट सर्वर पर चल रहा है। मैंने VS2008 और VS2010 में .net 2.0, 3.5 और 4 का उपयोग करके इसे डीबग करने की कोशिश की है।

मैंने संकलक अनुकूलन और कई Microsoft हॉट-फ़िक्स को बंद करने का प्रयास किया है। इस मुद्दे को दूर करने के लिए कुछ भी नहीं लगता है। इसकी सराहना की जाएगी यदि किसी को किसी भी संभावित कारणों का पता है, या किसी तरह का तरीका है जिससे समस्या की पहचान की जा सके।


कृपया पूरा कॉल स्टैक पोस्ट करें ...
मिच गेहूं


लगभग आधा समय मुझे कॉल स्टैक नहीं मिल सकता है। यदि यह घातक निष्पादन त्रुटि को फेंकता है तो डिबगिंग जानकारी बिल्कुल नहीं है। कई बार यह कोड में कहीं रुक जाता है, कुछ भी असामान्य नहीं लगता। मैं भी सभी सक्रिय धागे और havent के माध्यम से चला गया है कुछ भी देखा है कि एक संघर्ष पैदा कर सकता है। मैं यह मान रहा हूं कि स्मृति भ्रष्टाचार कुछ समय पहले हुई थी जब वह त्रुटि थी।
किसी ने

गंदे पुराने COM और ActiveX घटकों की जाँच करें। मैं यह भी जानता हूं कि बहु-स्तरीय वातावरण में SQLCE क्रेप्स इस तरह से बाहरी हैं।
लेप्पी

कोई COM या ActiveX घटक नहीं हैं।
कोई व्यक्ति

जवाबों:


50

मैंने अभी इस मुद्दे का सामना वी.एस. 2013 .NET 4.5 में एक MapInfo DLL के साथ किया है। पता चला, समस्या यह थी कि मैंने प्लेटफ़ॉर्म फॉर बिल्ड को x86 से किसी भी सीपीयू में बदल दिया और यह इस त्रुटि को ट्रिगर करने के लिए पर्याप्त था। इसे वापस बदलकर x86 ने चाल चली। किसी की मदद कर सकते हैं।


1
आपने इसे x86 के साथ कैसे बदला मैं बस इस निर्देश के साथ एक ही समस्या का सामना कर रहा हूँ CSingleLock lock(&m_csMember, TRUE);अधिक जानकारी के लिए, यहां मेरी पोस्ट
एबीसीमो

वीएस 2012/2013 में, प्रोजेक्ट प्रॉपर्टीज पर जाएं-> "प्लेटफ़ॉर्म टारगेट" बनाएँ और बदलें जो भी आपको आवश्यक है। हालांकि मुझे लगता है कि एक और जगह है जहां आप इसे बदल सकते हैं, लेकिन मैं इसे ढूंढ नहीं सकता, मुझे लगता है कि या तो तरीके समान परिणाम प्राप्त करने चाहिए
सर्गेई

मैं वास्तव में वी.एस. 2013 का उपयोग कर रहा हूँ, और यह 86 के रूप में कॉन्फ़िगर किया गया है: /
ABCmo

1
आपकी समस्या कई चीजों के कारण हो सकती है, मुझे वास्तव में आश्चर्य हुआ कि मैंने बिल्ड प्लेटफ़ॉर्म को बदलकर अपनी समस्या को ठीक कर लिया। आप कह सकते हैं एक भाग्यशाली बच।
सेर्गी

इस उत्तर के साथ संयोजन में इस समाधान ने इसे मेरे लिए हल कर दिया।
ज़च पोस्टेन

23

मैंने विजुअल स्टूडियो (वीएस) 2010 के साथ भी इस मुद्दे का सामना किया। अधिक दिलचस्प बात यह है कि मेरे पास मेरे समाधान (कंसोल एप्लिकेशन, डब्ल्यूपीएफ एप्लिकेशन, विंडोज फॉर्म एप्लीकेशन) में कई परियोजनाएं थीं, लेकिन यह केवल तब विफल हो रहा था, जब मैं "कंसोल एप्लिकेशन" प्रकार सेट कर रहा था। समाधान की परियोजना के रूप में परियोजना शुरू करें (यहां तक ​​कि उन लोगों के लिए, जिनके पास शाब्दिक रूप से कोई कोड या कोई अतिरिक्त असेंबली नहीं है जो डिफ़ॉल्ट रूप से संदर्भित हैं जो परियोजना टेम्पलेट के साथ आते हैं)।

बाद में परिवर्तन ने मुझे इस मुद्दे को खत्म करने में मदद की: कंसोल एप्लिकेशन प्रोजेक्ट के प्रोजेक्ट गुणों पर जाएं (वैकल्पिक रूप से, समाधान एक्सप्लोरर में प्रोजेक्ट फ़ाइल का चयन करें और Alt+ Enterकुंजी संयोजन) -> Debugटैब पर जाएं -> Enable Debuggersदाएँ फलक में अनुभाग पर स्क्रॉल करें -> चेक करें Enable unmanaged code debuggingचेक बॉक्स के रूप में नीचे स्नैपशॉट में दिखाया गया है -> क्लिक करें Floppyपरियोजना गुण को बचाने के लिए टूलबार में बटन। ऐसा क्यों हुआ इसका मूल कारण अभी भी मुझे ज्ञात नहीं है। केवल एक चीज जो मैंने देखी, वह यह थी कि पिछली रात मेरी मशीन पर बहुत सारे विंडोज़ अपडेट्स लगे थे जो ज्यादातर ऑफिस अपडेट्स और ओएस अपडेट्स (एक दर्जन से अधिक केबी आर्टिकल्स) के लिए गठित किए गए थे।

यहां छवि विवरण दर्ज करें

अद्यतन : वीएस 2017 आगे की सेटिंग नाम बदल गया है जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है:

यहां छवि विवरण दर्ज करें


1
वीएस 2017 के रूप में इसका नाम बदलकर " देशी कोड डीबगिंग सक्षम करें "
चिरमिसु

1
धन्यवाद @Ciramisu अप-टू-डेट जानकारी प्रदान करने और समुदाय की मदद करने के लिए। मैंने विज़ुअल स्टूडियो के नए संस्करणों के लिए इसे उपयुक्त बनाने के लिए उत्तर अपडेट किया है।
आरबीटी

19

अंत में WinDBG और SOS की मदद से इसे ट्रैक किया गया। कुछ अज्ञात DLL द्वारा प्रवेश उल्लंघन किया जा रहा था। "एनवीडिया नेटवर्क मैनेजर" नामक सॉफ्टवेयर का एक टुकड़ा चालू करने से समस्याएं पैदा हो रही थीं। मैं अनगिनत बार पढ़ूंगा कि यह समस्या फ़ायरवॉल या एंटीवायरस के कारण कैसे हो सकती है, दोनों में से न तो मैं इसका उपयोग कर रहा हूं इसलिए मैंने इस विचार को खारिज कर दिया। इसके अलावा, मैं इस धारणा के तहत था कि यह पर्यावरणीय नहीं था क्योंकि यह विभिन्न हार्डवेयर का उपयोग करके 1 से अधिक सर्वर पर होता है। उन सभी मशीनों को चालू करता है जिनका मैंने परीक्षण किया था जो "एनवीडिया नेटवर्क मैनेजर" चला रहे थे। मेरा मानना ​​है कि यह बाकी मदरबोर्ड ड्राइवरों के साथ स्थापित है।

उम्मीद है कि यह किसी को मदद करता है क्योंकि यह समस्या बहुत लंबे समय से मेरे आवेदन को कम कर रही थी।


1
मेरे मामले में जब मैं डिवाइस को उसके फेंकने की त्रुटि से बार-बार पढ़ता हूं, तो मैंने अगले पढ़ने के लिए थ्रेड.सलीप (1000) का उपयोग करते हुए कुछ समय के लिए थ्रेड बंद कर दिया था। और सही काम कर रहा है।
JRB

6
मुझे लगता है कि इलाज "एनवीडिया नेटवर्क प्रबंधक की स्थापना रद्द" था
पॉल

79
अधिकांश मतदान मत का उत्तर जो किसी तार्किक उत्तर की आपूर्ति नहीं करता है।
तेमन शिपाही

मुझे लगता है कि मुझे अपने मदरबोर्ड या अपने सॉफ़्टवेयर में एनवीडिया से संबंधित कुछ भी है। मैं Visual Studio 2010 का उपयोग कर रहा हूँ। समस्या केवल VS से प्रोजेक्ट को डीबग करने के दौरान होती है। डीबग फ़ोल्डर से इसका आउटपुट exe एकदम सही काम करता है।
RBT

1
मैं अपनी प्रक्रिया के थ्रेड्स एक्सेस कर रहा हूं जो समस्या का कारण हैं।
मुहम्मद साकिब

13

प्रोजेक्ट में मिश्रित बिल्ड प्लेटफ़ॉर्म DLL के कारण समस्या हो सकती है। यानी आप किसी भी CPU के लिए अपनी परियोजना का निर्माण करते हैं, लेकिन x86 प्लेटफॉर्म के लिए पहले से निर्मित परियोजना में कुछ DLL हैं। ये 32bit और 64bit आर्किटेक्चर की अलग-अलग मेमोरी मैपिंग के कारण रैंडम क्रैश का कारण बनेंगे। यदि सभी DLL एक मंच के लिए बनाए गए हैं तो समस्या हल हो सकती है।



8

यह त्रुटि प्रबंधित कोड में नहीं होनी चाहिए। इससे समस्या हल हो सकती है:

इस अपवाद को दरकिनार करने के लिए Visual Studio डीबगर पर जाएँ:

Tools menu ->Options -> Debugging -> General -> Uncheck this option "Suppress JIT optimization on module load"

आशा है कि यह मदद करेगा।


3
मुझे खेद है कि यह आपके लिए काम नहीं कर रहा है। यह त्रुटि बहुत सारे कारणों से उठाई जाती है, मैंने सोचा, जो समाधान मैंने पोस्ट किया है, वह किसी और के लिए समस्या का समाधान हो सकता है यदि इसका कारण जेआईटी ऑप्टिमाइज़ेशन है।
जिज्ञासु बोय

6

मैं भाग गया हूं, और आज इस अपवाद का एक संकल्प मिला है। यह तब हो रहा था जब मैं एक यूनिट टेस्ट (NUnit) को डिबग करने की कोशिश कर रहा था, जिसे एक अमूर्त वर्ग पर एक आभासी विधि कहा जाता था।

समस्या .NET 4.5.1 स्थापित के साथ प्रतीत होती है।

मैंने .NET 4.5.2 डाउनलोड किया है और इंस्टॉल किया है (मेरी परियोजनाएं अभी भी .NET 4.5.1 संदर्भ हैं) और समस्या हल हो गई है।

समाधान का स्रोत:

https://connect.microsoft.com/VisualStudio/feedback/details/819552/visual-studio-debugger-throws-accessviolationexception


5

यह हार्डवेयर हो सकता है। यह कुछ जटिल हो सकता है ... लेकिन मैं सुझाव देता हूं कि कहीं न कहीं आपका थ्रेडिंग कोड एक उपयुक्त लॉक के साथ कुछ संग्रह (जैसे एक शब्दकोश) की रक्षा नहीं कर रहा है।

आप किस OS और सर्विस पैक पर चल रहे हैं?


1
XP 64 SP2 चल रहा है। यह कई सर्वरों पर हुआ है। मैं सब कुछ के माध्यम से कई बार गया हूँ और मैं कुछ भी नहीं थ्रेड्स को सुरक्षित नहीं देखता। इसके अलावा, मैं एक संग्रह का उपयोग करने के बजाय एक संग्रह संशोधित त्रुटि हो रही होगी?
कोई और

5

मुझे हाल ही में यह समस्या हुई जब मैंने एक परियोजना के लिए विकास सर्वर को बदल दिया। मुझे यह त्रुटि कोड की लाइन पर मिल रही थी जहाँ मैंने एक नया OracleConnection वैरिएबल घोषित किया।

हॉटफ़िक्स स्थापित करने सहित कई चीजों की कोशिश करने के बाद, मैंने प्रोजेक्ट में Oracle.DataAccess और System.Data.OracleClient संदर्भ बदलने की कोशिश की और यह काम कर गया!

जब एक परियोजना को एक नई मशीन में स्थानांतरित किया जाता है, तो मैं आपको उस परियोजना में जोड़े गए सभी संदर्भों को नवीनीकृत करने का सुझाव देता हूं।


4

क्या आपने अपने आवेदन के लिए DEP (डेटा निष्पादन रोकथाम) को बंद करने का प्रयास किया था ?


2
मुझे यकीन नहीं है कि यह एक अच्छा विचार है। यह दुर्घटना में देरी कर सकता है लेकिन अधिक नुकसान करने की कीमत पर। मुझे लगता है कि सबसे अच्छा विचार है, अगर आप दुर्घटना करने जा रहे हैं, तो जल्दी से दुर्घटना करना है :-)
paxdiablo

1
डीईपी को बंद करना नासमझ है लेकिन एक उपयोगी नैदानिक ​​अभ्यास है।
vcsjones 3

4

मैंने उसी मुद्दे का सामना किया। मेरा कोड एक .NET dll (ऑटोकैड एक्सटेंशन) ऑटोकैड 2012 के अंदर चल रहा था। मैं Oracle.DataAccess का भी उपयोग कर रहा हूं और मेरा कोड ExecuteNonQuery () के दौरान एक ही अपवाद फेंक रहा था। मैंने सौभाग्य से इस समस्या को ODP के .net संस्करण को बदलकर हल कर लिया था, जो कि मैं उपयोग कर रहा था (जो कि Oracle.DataAccess का 2.x है)


मैं एक ही मुद्दे का सामना कर रहा हूँ - ऑटोकैड .net dll - क्या आप इस बारे में विस्तार से बता सकते हैं कि समस्या और समस्या क्या थी?
बीकेएसपूर्जन

3

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

कथन का अर्थ यह है कि, जब आप स्मृति को एक्सेस करने की कोशिश करते हैं जो आपकी नहीं है, तो यह आमतौर पर होता है क्योंकि आप इसे एक भ्रष्ट सूचक के साथ कर रहे हैं, जो कहीं और से आया है। इसलिए यह संकेत दे रहा है।

स्मृति भ्रष्टाचार के साथ, त्रुटि को पकड़ना शायद ही कभी त्रुटि के मूल कारण के पास होता है। और प्रभाव वही हैं जो आप वर्णन करते हैं, प्रतीत होता है यादृच्छिक। आपको बस सामान्य दोषियों को देखना होगा, जैसे कि:

  • अनइंस्टॉल किए गए संकेत या अन्य मूल्य।
  • इसके आकार से अधिक बफर लिखना।
  • थ्रेड द्वारा साझा किए गए संसाधन जो म्यूटेक्स द्वारा संरक्षित नहीं हैं।

मूल कारण खोजने के लिए इस तरह की समस्या से पीछे हटना अविश्वसनीय रूप से मुश्किल है क्योंकि समस्या के निर्माण और समस्या का पता लगाने के बीच बहुत कुछ हो सकता है।

मैं ज्यादातर यह क्या पर एक नजर है आसान है खोजने के है भ्रष्ट (जैसे कि, एक विशिष्ट सूचक) और फिर देखने के लिए क्या यह दूषित हो सकता था कोड के मैनुअल स्थिर विश्लेषण करते हैं, हमेशा की तरह अपराधियों के लिए जाँच के रूप में ऊपर दिखाए गए। हालांकि, यहां तक ​​कि यह समस्याओं की लंबी श्रृंखला को भी नहीं पकड़ पाएगा।

मैं जानने के लिए VS के साथ पर्याप्त रूप से परिचित नहीं हूं, लेकिन आप मेमोरी ट्रैकिंग टूल (जैसे लिनक्स के लिए वेलग्रिंड) का उपयोग करने की संभावना पर गौर कर सकते हैं, यह देखने के लिए कि क्या यह किसी भी स्पष्ट मुद्दे को देख सकता है।


3
आप खराब मेमोरी से भी दूषित पॉइंटर प्राप्त कर सकते हैं। यदि यह ईसीसी मेमोरी वाले सर्वर पर नहीं हो रहा है, तो हार्डवेयर को एक कारण के रूप में समाप्त करने के लिए लंबे समय तक चलने वाली मेमोरी टेस्ट उपयोगिता का प्रयास करें।
cdonner

12
मुझे पता है कि इसका हार्डवेयर मुद्दा नहीं है क्योंकि यह कई सर्वरों पर होता है। स्पष्ट रूप से कोड कप्तान में कुछ बुरा होने का संकेत देने के लिए धन्यवाद। मैं दृश्य स्टूडियो को दोष नहीं दे रहा हूं। जैसा कि कहा गया है कि आवेदन समय की यादृच्छिक अवधि के लिए ठीक चलता है। इसका पुनरुत्पादन करना आसान नहीं है और मैं इस मुद्दे को अब हफ्तों तक पहचानने की कोशिश कर रहा हूं।
किसी ने

5
@Someone Else: मुझे शायद ही लगता है कि नाम बुलाने से आपको बहुत मदद मिलने वाली है।
मिच गेहूं

2
@Someone Else, मैंने आपके द्वारा प्रदान की गई सीमित जानकारी दी है जितना मैंने मदद की है। यहां तक ​​कि दुनिया में सबसे अच्छा डॉक्टर एक मरीज के साथ बहुत कुछ नहीं कर सकता है जो केवल "मुझे चोट पहुंचाता है" :-) यदि आप अधिक विशिष्ट जानकारी प्रदान करना चाहते हैं, तो शायद हम और अधिक मदद कर सकते हैं।
paxdiablo

5
बुरा जवाब, लेकिन दृष्टिकोण, बेशर्म अटकलें, अनुचित धारणाएं, कोई समाधान नहीं दिया गया ... यह जवाब अभी भी क्यों है? और क्या 3 लोगों को इस जवाब को संभव हो सकता है?
थंडरग्रो

3

सत्यापन योग्य कोड स्मृति को दूषित करने में सक्षम नहीं होना चाहिए, इसलिए कुछ असुरक्षित चल रहा है। क्या आप कहीं भी किसी भी असुरक्षित कोड का उपयोग कर रहे हैं, जैसे कि बफर प्रोसेसिंग में? इसके अलावा, PInvoke के बारे में सामान अप्रासंगिक नहीं हो सकता है, क्योंकि PInvoke में अप्रबंधित कोड और संबंधित मार्शलिंग के लिए एक संक्रमण शामिल है।

मेरी सबसे अच्छी सिफारिश दुर्घटनाग्रस्त उदाहरण से जुड़ी है और दुर्घटना के समय क्या हो रहा है, इसकी गहराई तक खुदाई करने के लिए WinDBG और SOS का उपयोग करें । यह दिल के बेहोश होने के लिए नहीं है, लेकिन इस बिंदु पर आपको यह निर्धारित करने के लिए अधिक शक्तिशाली साधनों को तोड़ने की आवश्यकता हो सकती है, वास्तव में, गलत हो रहा है।


यह त्रुटि संदेश में संभावित कारण के रूप में PInvoke का उल्लेख करता है। कोई असुरक्षित कोड नहीं है। मैं WinDBG की कोशिश करूँगा। धन्यवाद।
किसी ने

3

ठीक है, यह बहुत बेकार और बस किस्सा हो सकता है, लेकिन ...

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

मैंने इंटरनेट पर सभी सुझाए गए समाधानों की बहुत कोशिश की, कोई फायदा नहीं हुआ ... जब तक मैंने अपने सेलफोन को अनप्लग नहीं किया (यह यूएसबी के माध्यम से जुड़ा था)।

और इसने काम किया।

Twain32 पुस्तकालयों से पता चलता है कि मेरे फोन को एक जुड़वां संगत उपकरण के रूप में सूचीबद्ध करने की कोशिश कर रहे थे, और इस प्रक्रिया में ऐसा कुछ हुआ जो उस अपवाद का कारण बना।

जाओ पता लगाओ...


3

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

के बजाय

StringBuilder windowText = new StringBuilder(); // Probable overflow of default capacity (16)

एक बड़ी क्षमता का उपयोग करें:

StringBuilder windowText = new StringBuilder(3000);

2

मेरे मामले में फ़ाइल खुली थी और इसलिए लॉक थी।

जब एक्सेल में भी खोला गया था कि LinqToExcel का उपयोग करके एक एक्सेल फाइल को लोड करने की कोशिश करते समय मुझे यह मिल रहा था।

यह सब मैंने किया है

    var maps = from f in book.Worksheet<NavMapping>()
                select f;
    try {
        foreach (var m in maps)
            if (!string.IsNullOrEmpty(m.SSS_ID) && _mappings.ContainsKey(m.SSS_ID))
                _mappings.Add(m.SSS_ID, m.CDS_ID);
    } catch (AccessViolationException ex) {
        _logger.Error("mapping file error. most likely this file is locked or open. " + ex);
    }

2

मुझे VB.NET के साथ काम कर रहे एक प्रोजेक्ट में वही त्रुटि मिली। गुणों के पृष्ठ पर "एप्लिकेशन फ़्रेमवर्क सक्षम करें" की जाँच करके इसे मेरे लिए हल किया गया।


1

मुझे यह समस्या भी हुई । मैं एक ही समय में दृश्य स्टूडियो का उपयोग करके अलग-अलग समाधान चला रहा था, जब अन्य समाधान बंद कर रहा था और सिर्फ लक्ष्य समाधान चल रहा था, तो उस त्रुटि के बिना ठीक काम किया।


1

VS1017 में यह त्रुटि बेतरतीब ढंग से मिली, जब एक परियोजना बनाने की कोशिश की जा रही थी जो एक दिन पहले पूरी तरह से ठीक हो रही थी। पीसी को रीस्टार्ट करने से समस्या ठीक हो गई (मैंने निम्नलिखित कमांड को पहले ही चला दिया, यह निश्चित नहीं है कि यह आवश्यक है: नेटश विंटर स्ट्रोक)


1
वीएस 2017 के साथ ठीक यही मेरी स्थिति है - System.AccessViolationException: संरक्षित मेमोरी पढ़ने या लिखने का प्रयास। यह अक्सर एक संकेत है कि अन्य स्मृति भ्रष्ट है। मैंने बस कुछ और किए बिना इस समस्या को हल करने के लिए पीसी को पुनरारंभ किया।
हांग

0

मेरा उत्तर बहुत हद तक आपके परिदृश्य पर निर्भर करता है, लेकिन हमारे पास एक क्लाइंट के लिए .NET एप्लिकेशन को अपग्रेड करने का प्रयास करने का एक मुद्दा था जो कि> 10 वर्ष का था, इसलिए वे इसे विंडोज 8.1 पर काम कर सकते थे। @ alhazen का जवाब मेरे लिए सही बॉलपार्क में था। अनुप्रयोग एक तृतीय-पक्ष DLL पर निर्भर था जो क्लाइंट अपडेट करने के लिए भुगतान नहीं करना चाहता था (Pegasus / Accusoft ImagXpress)। हमने .NET 4.5 के लिए एप्लिकेशन को फिर से लक्षित किया है लेकिन हर बार निम्न पंक्ति में हमें AccessViolationException was unhandledसंदेश प्राप्त होता है:

UnlockPICImagXpress.PS_Unlock (1908228217,373714400,1341834561,28447);

इसे ठीक करने के लिए, हमें निम्नलिखित पोस्ट-बिल्ड इवेंट को प्रोजेक्ट में जोड़ना पड़ा:

call "$(DevEnvDir)..\tools\vsvars32.bat"
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64\editbin.exe" /NXCOMPAT:NO "$(TargetPath)"

यह स्पष्ट रूप से निष्पादन को डेटा निष्पादन रोकथाम के साथ असंगत के रूप में निर्दिष्ट करता है। अधिक जानकारी के लिए यहां देखें ।


0

कुछ मामलों में, ऐसा तब हो सकता है:

obj = new obj();
...
obj.Dispose();  // <-----------------    Incorrect disposal causes it
obj.abc...

0

मेरे मामले में मुझे P / Invoke का उपयोग करके C / C ++ लाइब्रेरी का संदर्भ देना था, लेकिन मुझे यह सुनिश्चित करना था कि मेमोरी को पहले उपयोग करते हुए आउटपुट सरणी के लिए आवंटित किया गया था fixed:

[DllImport("my_c_func_lib.dll", CharSet = CharSet.Ansi)]
public static extern unsafe int my_c_func(double input1, double input2, double pinput3, double *outData);

    public unsafe double[] GetMyUnmanagedCodeValue(double input1, double input2, double input3)
    {
        double[] outData = new double[24];

        fixed (double* returnValue = outData)
        {
            my_c_func(input1, input2, pinput3, returnValue);
        }

        return outData;
    }

जानकारी के लिए कृपया देखें: https://www.c-sharpcorner.com/article/pointers-in-C-Sharp/


0

यह मेरे साथ तब हुआ जब मैं विजुअल स्टूडियो में अपने C # WinForms एप्लिकेशन को डिबग कर रहा था। मेरे आवेदन D32Iport के माध्यम से Win32 सामान के लिए कॉल करता है, जैसे

[DllImport("Secur32.dll", SetLastError = false)]
private static extern uint LsaEnumerateLogonSessions(out UInt64 LogonSessionCount, out IntPtr LogonSessionList);

विजुअल स्टूडियो "प्रशासक के रूप में" चलने से मेरे लिए समस्या हल हो गई।


0

मेरे पास एक ही त्रुटि संदेश था:

System.AccessViolationException: संरक्षित मेमोरी पढ़ने या लिखने का प्रयास किया गया। यह अक्सर एक संकेत है कि अन्य स्मृति भ्रष्ट है।

मेरे मामले में, त्रुटि साफ होने के बाद चली गई और समाधान को फिर से बनाया गया।


0

मेरे मामले में FTDI उपयोगिता FT प्रोग त्रुटि को फेंक रहा था क्योंकि यह USB उपकरणों के लिए स्कैन किया गया था। पीसी से मेरे ब्लूटूथ हेडफ़ोन को अनप्लग करना समस्या को निर्धारित करता है।


0

मुझे यह त्रुटि संदेश लैम्ब्डा अभिव्यक्ति पर मिला है जो वस्तुओं के संग्रह को फ़िल्टर करने के लिए लाइनक का उपयोग कर रहा था। जब मैंने संग्रह का निरीक्षण किया तो मैंने देखा कि इसके सदस्य आबादी में नहीं थे - Localsखिड़की में, उनका विस्तार करते हुए सिर्फ "..." दिखाया गया। अंततः समस्या रिपॉजिटरी पद्धति में थी जिसने शुरू में संग्रह को आबाद किया - डॅपर स्वचालित रूप से एक शून्य वस्तु की संपत्ति का नक्शा बनाने की कोशिश कर रहा था। मैंने मल्टी-मैपिंग को संभालने के लिए डैपर क्वेरी को ठीक किया और उस मेमोरी की त्रुटि को ठीक किया।

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