2009-05-19 12 views
5

एक पर्ल कार्यक्रम मैं निम्न त्रुटि*** glibc का पता चला *** पर्ल: डबल मुक्त या भ्रष्टाचार (पिछला!): 0x0c2b7138 ***

 
*** glibc detected *** perl: double free or corruption (!prev): 0x0c2b7138 *** 
/lib/tls/i686/cmov/libc.so.6[0xb7daea85] 
/lib/tls/i686/cmov/libc.so.6(cfree+0x90)[0xb7db24f0] 
perl(Perl_pregfree+0x3e)[0x80a004e] 
perl(perl_destruct+0xcf1)[0x806b711] 
/usr/local/lib/perl/5.8.8/auto/threads/threads.so[0xb79d2dfb] 
/usr/local/lib/perl/5.8.8/auto/threads/threads.so[0xb79d2f9b] 
/usr/local/lib/perl/5.8.8/auto/threads/threads.so[0xb79d5fbb] 
/lib/tls/i686/cmov/libpthread.so.0[0xb7e974fb] 
/lib/tls/i686/cmov/libc.so.6(clone+0x5e)[0xb7e19e5e] 

मेरे ओएस Ubuntu 8.04, पर्ल है का सामना करना पड़ा जबकि चल रहा है संस्करण 5.8.8

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

आपके समर्थन के लिए धन्यवाद।

पीएस: मुझे पता है कि थ्रेड किसी के लिए आदर्श मित्र नहीं हैं। हालांकि मैं perl का उपयोग करने का निर्णय नियंत्रित नहीं करता हूं। मैं सिर्फ कोड बनाए रख रहा हूं।

उत्तर

2

अपने कोड खोलने के लिए और कहीं से पहले जहां यह समस्या तब होती है में डाल दिया:

$DB::single=1; 

फिर

PERL5OPT='-dt' perl yourscript.pl 

चलाने के लिए और जब तक समस्या फिर से होता है

c[enter]

बार बार मारा । (यह ध्यान रखें कि यह आपके मैन्युअल ब्रेकपॉइंट पर बंद हो गया है या विफल होने से पहले नहीं)।

तो iteratively आगे/पीछे आप इसे है जब तक बस अपने समापन बिंदु से पहले (आप के साथ प्रिंट का एक समूह भी आदेश मौत बिंदु मिल सकता है) के मैनुअल ब्रेकप्वाइंट ले जाते हैं, और फिर काम पूर्व के साथ संभवतः, वहाँ से कोशिश -क्रैश आत्मनिरीक्षण।

यह (उम्मीद है) आपको परीक्षण-केस उत्पन्न करने में मदद करेगा जो समस्या को प्रदर्शित करता है।

+0

धागे में तोड़ना मेरे लिए बहुत सी सिरदर्द हो रहा था .. इस जानकारी के लिए धन्यवाद। :) इस तरह मैं वास्तव में यह पता लगा सकता हूं कि समस्या क्या थी। बस वापस नहीं आया और अपना समाधान टैग करें। – kingpin

1

सबसे संभावित कारण glibc का एक असंगत संस्करण है। आपको ग्लिब के संस्करण के साथ पर्ल चलाने की आवश्यकता है जिसके साथ इसे संकलित किया गया था

+0

मैं उबंटू के साथ स्थापित perl का उपयोग कर रहा हूँ। मुझे विश्वास है कि डिफ़ॉल्ट रूप से स्थापित perl glibc संस्करण के साथ संगत होना चाहिए। प्लस मैंने भी RHEL5 पर एक ही समस्या का अनुभव किया है। तो यह होना चाहिए कि इन दोनों प्रणालियों में संस्करण संघर्ष हो सकता है। – kingpin

1

यह पर्ल के लिए आंतरिक त्रुटि की तरह दिखता है। "डबल फ्री या भ्रष्टाचार" से स्मृति को दो बार मुक्त किया जाता है, या दूषित हो जाता है। पर्ल आपके लिए स्मृति का प्रबंधन करता है, इसलिए यदि पर्ल सही तरीके से काम कर रहा है तो ऐसा कभी नहीं होना चाहिए।

क्या पर्ल का एक नया संस्करण है जिसे आप अपग्रेड कर सकते हैं?

+0

मैं perl 5.8.8 का उपयोग कर रहा हूं ... मैं 5.8 तक अपग्रेड कर सकता हूं।8 हालांकि जो उत्पाद मैं काम कर रहा हूं वह केवल 5.8.8 पर समर्थित है। क्या कोई अन्य उपकरण है जो मैं डीबगर को हुक कर सकता हूं और कार्यों की निगरानी कर सकता हूं और स्क्रिप्ट तोड़ने के बिंदु पर बिल्कुल पिन कर सकता हूं। – kingpin

+0

व्यक्तिगत रूप से, मैं 5.8.9 तक अपग्रेड करने का प्रयास करूंगा। यह एक रखरखाव रिलीज माना जाता है, इसलिए आपके आवेदन को तोड़ने की संभावना नहीं है। पर्ल 5.8.9 के लिए रिलीज घोषणा थ्रेडसेफ मुद्दे के लिए एक फिक्स का उल्लेख करती है। यह वास्तव में आपकी समस्या हो सकती है। http://search.cpan.org/~nwclark/perl-5.8.9/pod/perl589delta.pod#Smaller_fixes सिद्धांत रूप में, आप पर्ल पर एक डीबगर संलग्न कर सकते हैं और समस्या कहां के बारे में और जानने के लिए प्रयास कर सकते हैं। यह बहुत महत्वाकांक्षी होगा। –

2

This thread perl5 पोर्टर्स मेलिंग सूची पर यह इंगित करता है कि यह 5.8.8 और धागे के साथ ज्ञात समस्या है। मुझे लगता है कि आपकी समस्या शायद कोड की समस्या के कारण है जो पर्ल द्वारा पकड़ा नहीं जाता है।

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

+0

कोड को दबाकर एक भारी काम की तलाश में है। मैं इसे अंतिम उपाय के रूप में करना चाहता हूं। क्या हमारे पास पर्ल धागे के लिए कोई विज़ुअलाइजेशन टूल है। या मैं बहुत महत्वाकांक्षी हूँ ??? – kingpin

+0

http://delta.tigris.org कम से कम पुनरुत्पादित परीक्षण केस बनाने के लिए एक अच्छा टूल है। यह उचित यांत्रिक सहायता के साथ एक भारी कार्य नहीं होना चाहिए :) – ephemient

+0

नए धागे के अनुसार समान धागे के बाद यह पाया गया कि यह एक ज्ञात मुद्दा है और भविष्य के संस्करणों में शामिल किया जाएगा। मैंने उस अनुभाग को प्रतिस्थापित किया जहां मैंने इस मुद्दे पर एक वैकल्पिक हैक के साथ संदेह किया था .. अच्छा काम करता है .. सूचक के लिए धन्यवाद ... – kingpin

0

सीपीएएन से 'धागे' और 'धागे :: साझा' मॉड्यूल अपडेट करने का प्रयास करें।

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