2010-05-19 20 views
11

जब मैंने एक ऐप डीबग करने में मदद करने के लिए वालग्रिंड का उपयोग किया था, तो मैं काम कर रहा था, मुझे शोर के बारे में बहुत कुछ पता चला जो मानक पुस्तकालयों के बारे में शिकायत कर रहा है। एक परीक्षण के रूप में मैंने यह किया;वालग्रिंड 'शोर', इसका क्या अर्थ है?

echo 'int main() {return 0;}' | gcc -x c -o test - 

तब मैंने यह किया;

valgrind ./test 

==1096== Use of uninitialised value of size 8 
==1096== at 0x400A202: _dl_new_object (in /lib64/ld-2.10.1.so) 
==1096== by 0x400607F: _dl_map_object_from_fd (in /lib64/ld-2.10.1.so) 
==1096== by 0x4007A2C: _dl_map_object (in /lib64/ld-2.10.1.so) 
==1096== by 0x400199A: map_doit (in /lib64/ld-2.10.1.so) 
==1096== by 0x400D495: _dl_catch_error (in /lib64/ld-2.10.1.so) 
==1096== by 0x400189E: do_preload (in /lib64/ld-2.10.1.so) 
==1096== by 0x4003CCD: dl_main (in /lib64/ld-2.10.1.so) 
==1096== by 0x401404B: _dl_sysdep_start (in /lib64/ld-2.10.1.so) 
==1096== by 0x4001471: _dl_start (in /lib64/ld-2.10.1.so) 
==1096== by 0x4000BA7: (within /lib64/ld-2.10.1.so) 
* large block of similar snipped * 
==1096== Use of uninitialised value of size 8 
==1096== at 0x4F35FDD: (within /lib64/libc-2.10.1.so) 
==1096== by 0x4F35B11: (within /lib64/libc-2.10.1.so) 
==1096== by 0x4A1E61C: _vgnU_freeres (vg_preloaded.c:60) 
==1096== by 0x4E5F2E4: __run_exit_handlers (in /lib64/libc-2.10.1.so) 
==1096== by 0x4E5F354: exit (in /lib64/libc-2.10.1.so) 
==1096== by 0x4E48A2C: (below main) (in /lib64/libc-2.10.1.so) 
==1096== 
==1096== ERROR SUMMARY: 3819 errors from 298 contexts (suppressed: 876 from 4) 
==1096== malloc/free: in use at exit: 0 bytes in 0 blocks. 
==1096== malloc/free: 0 allocs, 0 frees, 0 bytes allocated. 
==1096== For counts of detected errors, rerun with: -v 
==1096== Use --track-origins=yes to see where uninitialised values come from 
==1096== All heap blocks were freed -- no leaks are possible. 

पूर्ण परिणाम यहां देख सकते हैं: http://pastebin.com/gcTN8xGp

मैं दो प्रश्न हैं; सबसे पहले सभी शोर को दबाने का कोई तरीका है?

- शो-डाउन-मेन डिफ़ॉल्ट रूप से सेट नहीं है, लेकिन ऐसा लगता है कि - शो-बाद-मुख्य समकक्ष नहीं है।

उत्तर

5

वालग्रिंड 3.5.0 या बेहतर के लिए अपग्रेड करें। अन्य चीजों के बीच डिफ़ॉल्ट .supp फ़ाइलों को अद्यतन किया गया है।

12

आप जोड़कर

{ 
    ld error suppression 
    Memcheck:Cond 
    fun:dl_main 
    fun:_dl_sysdep_start 
    fun:_dl_start 
    obj:/lib64/ld-2.10.1.so 
} 
/usr/lib/valgrind/default.supp करने के लिए

(या अपने स्वयं दमन फ़ाइल को परिभाषित) द्वारा उत्पादन को दबाने कर सकते हैं।

यह कम से कम डेबियन & आर्क लिनक्स डेवलपर्स के लिए एक ज्ञात लिंकर/लोडर बग प्रतीत होता है; मैं बाकी के बारे में अनिश्चित हूं, साथ ही उनके कार्यवाही के कार्यवाही पाठ्यक्रम भी हूं।

+0

यह समस्या वालिग्रिंड से परिचित होने की तुलना में एक ग्लिबैक का उपयोग करने के साथ नई थी। सही दिशा में मुझे इंगित करने के लिए +1। –

4

मेरे पास समय-समय पर ये लक्षण हैं, और समाधान हमेशा को मेरे valgrind और libc संकुल को सिंक्रनाइज़ करने के लिए में अपग्रेड करना है। डेबियन में अच्छे छोटे elves बाकी का ख्याल रखना।

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