2016-01-08 7 views
5

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

अचानक जब मैं एक कार्यक्रम विकसित कर रहा था, तो एक नया निर्माण (बिना किसी बड़े बदलाव के) सबकुछ रोकने के लिए सबकुछ पैदा हुआ। मैंने यह देखने के लिए प्रोफाइल किया कि समय क्या हुआ, लेकिन% वितरण सामान्य था - सब कुछ अभी बहुत अधिक समय लगा।

बहुत नींद के साथ कॉलस्टैक के माध्यम से पीसने के बाद, मैंने रनटाइम के 95% + के लिए मुफ्त/मॉलोक/डिलीट/रीयलोक को देखा। ढेर भ्रष्टाचार पर संदेह, मैंने सभी बदलावों को वापस ले लिया, लेकिन कुछ भी नहीं बदला।

MSVC के प्रोफाइलर का उपयोग करना, मैं कॉल स्टैक नीचे खोदा, malloc/realloc परे और समाप्त हो गया - आश्चर्यजनक रूप से - एक बाहरी dll Acxtrnal.dll कहा जाता है पर। यहां स्टैक की एक क्लिप है: http://i.imgur.com/0xXv5MV.png

तो जाहिर है, कुछ बाहरी डीएल मेरे कार्यक्रम की ढेर सत्यापन प्रक्रियाओं में शामिल है। यह मुझे हल्के से चिंतित बनाता है। डीएलएल को गुगल करने से केवल एक ही आधिकारिक स्रोत पता चलता है (संगतता मोड के बारे में कुछ; प्रासंगिक नहीं): https://support.microsoft.com/en-us/kb/2272691

अविश्वास में आधा दिन डिबगिंग करने के बाद, समस्या गायब हो गई। ऐसा लगता है कि इस लड़के को एक ही समस्या थी, हालांकि 'उत्तर' शायद असंबंधित है: When profiling my fortran program, Acxtrnal.dll is the part using most of the CPU time! What is that dll.?

अब, मैं इस मुद्दे के बारे में उत्सुक और चिंतित हूं; चाहे वह वापस आएगा - और यह पहले मामले में क्यों हुआ? अगर किसी ने कुछ ऐसा अनुभव किया है, तो मैं आभारी रहूंगा, इसलिए हम इस मुद्दे पर प्रकाश डाल सकते हैं। हालांकि यह मुद्दा दुर्लभ प्रतीत होता है, शायद यह किसी को वहां से मदद करेगा।

+3

कौन आप इन लिंक का अनुसरण करने की उम्मीद कर रहे हैं? कृपया अपनी पोस्ट में एक [एमसीवीई] प्रदान करें। –

+1

क्या उपयोगकर्ता के रूप में प्रोग्राम चलाने के दौरान कभी भी मंदी देखी गई थी, यानी डीबगर/आईडीई पर्यावरण के बाहर? –

+3

@ πάντα ῥεῖ - आप किसी समस्या का एक सत्यापित उदाहरण चाहते हैं जो बिना किसी बड़े स्रोत परिवर्तन के अप्रत्याशित रूप से दिखाई देता है, वहां मौजूद परिवर्तनों को वापस करने के बावजूद बने रहे, फिर कोई स्पष्ट कारण नहीं गायब हो गया? ऐसे समय होते हैं जब कम से कम सत्यापन योग्य उदाहरण प्रदान करना संभव नहीं होता है, बिना किसी समस्या के कारण क्या हो रहा है। – Steve314

उत्तर

7

सामूहिक सहायता के लिए धन्यवाद। भविष्य में संदर्भ (और Googler) के लिए:

समस्या विंडोज दोष सहिष्णु ढेर के कारण होता है: https://msdn.microsoft.com/en-us/library/windows/desktop/dd744764(v=vs.85).aspx

यह एक प्रक्रिया है-विशिष्ट सेवा instantiated जब तुम भ्रष्ट करने के लिए किसी अज्ञात हद तक ढेर का प्रबंधन है। यह अज्ञात है कि सेवा को फिर से अक्षम कैसे करें; कुछ कहते हैं कि एपीआई डीएल (\ windows \ apppatch \ acxtrnal.dll में पाया गया) का नाम बदलें, या रजिस्ट्री के माध्यम से इसे अक्षम करें।

मेरे मामले में, मेरा प्रोग्राम एक प्लगइन-डीएल था, और गारंटी से मैंने किसी अन्य कार्यक्रम में डीएलएल को होस्ट करने के मुद्दे को हल किया।

अधिक जानकारी टिप्पणी में पाया जा सकता है, और यहाँ: http://billroper.livejournal.com/960122.html

How do I turn off the fault tolerant heap?

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