2012-11-06 13 views
6

लौटाता है, कॉलोक() विफल हो रहा है और न्यूल लौटा रहा है। आवंटित करने की कोशिश कर रहे स्मृति की मात्रा 9 2 9 2 बाइट्स की संरचना है। ऑपरेटिंग सिस्टम AIX 7.1 है और VIOS 2.2.1.3 चल रहा है।कॉलोक विफल रहता है और हमारे अनुप्रयोग के मॉड्यूल में से एक में NULL

मशीन में 2 + जीबी रैम है और इसमें स्मृति की कमी के साथ कोई समस्या नहीं है। एक ही एप्लीकेशन मॉड्यूल अन्य बॉक्सों में से एक पर ठीक चल रहा है, जिसमें समस्याग्रस्त बॉक्स के समान कॉन्फ़िगरेशन हैं। फोल्डिंग दोनों बक्से से स्मृति का एक स्निपेट है और वे वही हैं!

श्रमजीवी बॉक्स:

 
RLIMIT_AS  (infinite) (infinite) 
RLIMIT_CORE 1073741312 (infinite) 
RLIMIT_CPU  (infinite) (infinite) 
RLIMIT_DATA  134217728 (infinite) 
RLIMIT_FSIZE (infinite) (infinite) 
RLIMIT_NOFILE  2000 (infinite) 
RLIMIT_RSS  33554432 (infinite) 
RLIMIT_STACK  33554432 2147483646 

समस्याग्रस्त बॉक्स:

 
RLIMIT_AS  (infinite) (infinite) 
RLIMIT_CORE 1073741312 (infinite) 
RLIMIT_CPU  (infinite) (infinite) 
RLIMIT_DATA  134217728 (infinite) 
RLIMIT_FSIZE (infinite) (infinite) 
RLIMIT_NOFILE  2000 (infinite) 
RLIMIT_RSS  33554432 (infinite) 
RLIMIT_STACK  33554432 2147483646 

मुझे नहीं पता के रूप में वास्तव में क्यों calloc को समझ नहीं सकता (हूँ) इस बॉक्स पर 9292 बाइट्स के लिए भी विफल हो रहा है।

धन्यवाद

+0

शायद स्मृति विखंडन? आपके आवंटन के लिए पर्याप्त कोई बड़ा ब्लॉक नहीं है? जब आवंटन विफल रहता है, तो आपने चेक किया है उदा। यह देखने के लिए 'errno' क्या कहता है? –

+0

हाँ मैं वही सोच रहा था, लेकिन क्या इसका सबूत है या ठोस रूप से यह पता है ?? त्रुटि संख्या ENOMEM! ट्रस आउटपुट इस त्रुटि को दिखाता है! प्रक्रिया पर ट्रस से एक टुकड़ा इस lseek से पता चलता (3, 0, 1) \t \t \t \t \t = 4318 lseek (3, 0, 1) \t \t \t \t \t = 4318 lseek (3, 0, 1) \t \t \t \t \t = 4318 lseek (3, 242, 0) \t \t \t \t = 242 kread (3, "\ t एम INOR वी ersio" .., 4096) \t = 4096 lseek (3, 0, 1) \t \t \t \t \t = 4338 lseek (3, 222, 0) \t \t \t \t = 222 __libc_sbrk (0x00000000) \t \t \t \t अरे # 12 ENOMEM __libc_sbrk (0x00000000) \t \t \t \t अरे # 12 ENOMEM __libc_sbrk (0x00000000) \t \t \t \t अरे # 12 ENOMEM __libc_sbrk (0x00000000) \t \t \t \t अरे # 12 ENOMEM __l ibc_sbrk (0x00000000) \t \t \t \t एरर # 12 ईओएनएमएम – k2ibegin

+0

हमें कॉल करें, 'कॉलक' पर कॉल सहित कोड और उसके परिणाम की जांच करने वाला कोड दिखाएं। –

उत्तर

1

कोशिश calloc (1, sizeof (ifp_handle_t)); कॉलोक के बजाय (sizeof (ifp_handle_t), 1); मैं शायद गलत लेकिन ऐसा लगता है कि आप पैरामीटर उलटा कर चुके हैं।

+0

पर ठीक चलती है जब तक कि आपकी मशीन एकल बाइट्स पैड नहीं कर लेती है, लेकिन आप सही हैं, यह 'कॉलोक (एनएमईएम, आकार) 'है। – DevSolar

+0

मिमी .. मुझे नहीं लगता कि यह एक फर्क पड़ रहा है, क्योंकि मैंने मॉलोक के साथ भी कोशिश की है और वह भी असफल हो जाता है। इसके अलावा, एक ही कोड लंबे समय तक काम कर रहा है, यह तब हुआ जब ग्राहक ने एक नया विभाजन बनाया और AIX 6.1 VIOS विभाजन को 2.2.1.3 तक अपग्रेड किया। मुझे कम पृष्ठ की जगह पर संदेह है, या कुछ देर से/प्रारंभिक आवंटन संबंधित चीज हो सकती है, जो कि AIX के लिए विशिष्ट हो सकती है। – k2ibegin

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