2012-11-15 47 views
11

मैं एक प्रोग्राम चला रहा हूं, और यह सेगमेंटेशन गलती से बाधित है। समस्या यह है कि कोर डंप फ़ाइल बनाई गई है, लेकिन आकार शून्य है।सेगमेंटेशन गलती के बाद खाली कोर डंप फ़ाइल

क्या आपने इस तरह के मामले और इसे हल करने के बारे में सुना है?

मेरे पास डिस्क पर पर्याप्त स्थान है। कोर फ़ाइल के आकार को अनलिमिट करने के लिए मैंने पहले ही ulimit -c unlimited प्रदर्शन किया है - दोनों इसे चला रहे हैं या सबमिट की गई बैच फ़ाइल के शीर्ष पर डाल रहे हैं - लेकिन अभी भी 0 बाइट कोर डंप फ़ाइलें हैं। इन फ़ाइलों वाले फ़ोल्डर की अनुमतियां यूओजी + आरडब्ल्यू हैं और बनाई गई मूल फाइलों पर अनुमतियां केवल यू + आरडब्ल्यू हैं।

प्रोग्राम सी ++ द्वारा लिखा गया है और ग्रिड इंजन के qsub कमांड के साथ लिनक्स क्लस्टर पर सबमिट किया गया है, मुझे नहीं पता कि यह जानकारी प्रासंगिक है या नहीं।

+0

आपके पास लगता है कि ड्राइव पर खाली जगह है? –

+0

शून्य-लंबाई फ़ाइल पर लेखन अनुमतियां क्या हैं? – eh9

+0

अगला प्रश्न: युक्त निर्देशिका पर अनुमतियां क्या हैं? क्या प्रक्रिया प्रभावी उपयोगकर्ता आईडी के अंतर्गत चल रही है जो निर्देशिका स्वामी से अलग है? – eh9

उत्तर

5

ऐसा लगता है कि आप अपने निष्पादन योग्य लॉन्च करने के लिए बैच शेड्यूलर का उपयोग कर रहे हैं। हो सकता है कि टॉक/पीबीएस आपके नौकरी को बढ़ाने के लिए उपयोग कर रहे खोल को एक अलग अल्लिमिट मान प्राप्त करे? शायद शेड्यूलर की डिफ़ॉल्ट कॉन्फ़िगरेशन कोर डंप को संरक्षित नहीं करना है?

क्या आप अपना प्रोग्राम सीधे कमांड लाइन से चला सकते हैं?

या यदि आप अपने निष्पादन योग्य आवेदक से पहले अपने पीबीएस बैच स्क्रिप्ट के शीर्ष पर ulimit -c unlimited और/या ulimit -s unlimited जोड़ते हैं, तो आप पीबीएस के डिफ़ॉल्ट उलटी व्यवहार को ओवरराइड करने में सक्षम हो सकते हैं। या 'ulimit -c' जोड़ना रिपोर्ट कर सकता है कि सीमा क्या है।

+0

मैंने दोनों 'ulimit -c असीमित' और 'ulimit -s unlimited' को पीबीएस बैच स्क्रिप्ट में रखा है, लेकिन फिर भी कोर डंप खाली हैं! – Ali

+1

कोर सिस्टम डंप करने के लिए आप किस फाइल सिस्टम का उपयोग कर रहे हैं? –

6

सेटिंग ulimit -c unlimited डंप की पीढ़ी पर बदल गया। डिफ़ॉल्ट कोर डंप द्वारा वर्तमान निर्देशिका में उत्पन्न किया गया था जो nfs पर था। सेटिंग /proc/sys/kernel/core_pattern से /tmp/core ने मुझे खाली डंप की समस्या को हल करने में मदद की।

comment from Ranjith Ruban ने मुझे इस कामकाज को विकसित करने में मदद की।

कोर सिस्टम डंप करने के लिए आप किस फाइल सिस्टम का उपयोग कर रहे हैं?

+0

मुझे बस एक समस्या वर्चुअलबॉक्स छवि पर एक vboxsf फाइल सिस्टम के साथ था जो एनटीएफएस ड्राइव (मेजबान मशीन का ड्राइव) में मैप किया गया था। –

+0

कोर_पटरर्न को संशोधित करने के रूप में रूट उपयोगकर्ता चमत्कार करता है! एनएफएस ड्राइव पथ कोर फाइलों को शून्य बाइट बना देता है। http://stackoverflow.com/a/12760552/999943 जिस मार्ग को बनाया गया है उसे सेट करने के अलावा, कुछ निफ्टी वाक्यविन्यास भी बदलता है ताकि कोर फ़ाइल को कैसे नामित किया जा सके। http://www.linuxhowtos.org/Tips%20and%20Tricks/coredump.htm – phyatt

0

आप qsub विकल्प जैसे -l h_vmem=6G का उपयोग कर भौतिक स्मृति की 6 GB संचयकर्ता करने के लिए आवश्यक इस तरह के भौतिक स्मृति के रूप में संसाधन सीमा निर्धारित कर सकते हैं।

फ़ाइल ब्लॉक के लिए आप उचित मूल्य के लिए h_fsize सेट कर सकते हैं। ,

http://gridscheduler.sourceforge.net/htmlman/htmlman5/queue_conf.html

s_cpu  The per-process CPU time limit in seconds. 

s_core The per-process maximum core file size in bytes. 

s_data The per-process maximum memory limit in bytes. 

s_vmem The same as s_data (if both are set the minimum is 
      used). 
h_cpu  The per-job CPU time limit in seconds. 

h_data The per-job maximum memory limit in bytes. 

h_vmem The same as h_data (if both are set the minimum is 
      used). 

h_fsize The total number of disk blocks that this job can 
      create. 

इसके अलावा, अगर क्लस्टर प्रत्येक नोड के लिए स्थानीय TMPDIR का उपयोग करता है, और कहा कि भरने है, आप और अधिक के साथ वैकल्पिक स्थान के लिए TMPDIR सेट कर सकते हैं:

संसाधन देखें qconf मैनपेज की धारा LIMITS क्षमता, उदाहरण के लिए एनएफएस साझा करें:

export TEMPDIR=<some NFS mounted directory> 

फिर नौकरी के लिए वर्तमान वातावरण निर्यात करने के लिए विकल्प के साथ -Vqsub का शुभारंभ।

उपरोक्त का एक या संयोजन आपकी समस्या को हल करने में आपकी सहायता कर सकता है।

0

यदि आप एक घुड़सवार ड्राइव में कोर फ़ाइल चलाते हैं।मूल फ़ाइल को घुड़सवार ड्राइव पर नहीं लिखा जा सकता है लेकिन स्थानीय ड्राइव पर लिखा जाना चाहिए।

आप फ़ाइल को स्थानीय ड्राइव में कॉपी कर सकते हैं।