मैं मॉलॉक्स के उपयोग की निगरानी करना चाहता हूं और मॉलोक और फ्री हुक का उपयोग करके किसी एप्लिकेशन में मुक्त होना चाहता हूं।एक थ्रेड सुरक्षित तरीके से glibc malloc हुक का उपयोग कर
यहाँ प्रलेखन http://www.gnu.org/s/libc/manual/html_node/Hooks-for-Malloc.html
उदाहरण पृष्ठ से आप देख सकते हैं कि my_malloc_hook
क्षणिक malloc बंद हुक (या श्रृंखला में पिछले हुक करने के लिए) से पहले फिर से लागू malloc स्विच करता है।
बहु-थ्रेडेड अनुप्रयोगों की निगरानी करते समय यह एक समस्या है (स्पष्टीकरण के लिए प्रश्न का अंत देखें)।
इंटरनेट पर मिली मॉलोक हुक के उपयोग के अन्य उदाहरण एक ही समस्या है।
क्या इस फ़ंक्शन को बहु-थ्रेडेड एप्लिकेशन में सही ढंग से काम करने के लिए फिर से लिखने का कोई तरीका है?
उदाहरण के लिए, क्या एक आंतरिक libc फ़ंक्शन है जो मॉलोक हुक आ सकता है जो मेरे हुक को निष्क्रिय करने की आवश्यकता के बिना आवंटन को पूरा करता है।
मैं कॉर्पोरेट कानूनी नीति के कारण libc स्रोत कोड को नहीं देख सकता, इसलिए उत्तर स्पष्ट हो सकता है।
मेरा डिज़ाइन स्पेक कहता है कि मैं मॉलोक को एक अलग मॉलोक डिज़ाइन से प्रतिस्थापित नहीं कर सकता।
मुझे लगता है कि कोई अन्य हुक खेलने में नहीं हैं।
अद्यतन
के बाद से malloc हुक अस्थाई रूप से malloc सर्विसिंग निकाल दिया जाता है, एक और धागा malloc कॉल कर सकते हैं और नहीं हुक मिलता है।
यह सुझाव दिया गया है कि मॉलोक के पास एक बड़ा ताला है जो इसे होने से रोकता है, लेकिन यह दस्तावेज नहीं है, और तथ्य यह है कि मैं प्रभावी रूप से मॉलोक को कॉल करता हूं, यह सुझाव देता है कि किसी भी लॉक को हुक के बाद मौजूद होना चाहिए, या जॉली चालाक होना चाहिए :
caller ->
malloc ->
malloc-hook (disables hook) ->
malloc -> # possible hazard starts here
malloc_internals
malloc <-
malloc-hook (enables hook) <-
malloc
caller
यदि हम में से कोई भी libc स्रोत को देखता है और आपको इसके आधार पर जानकारी देता है, तो आप कानूनी रूप से उसी स्थिति में होंगे। –
आप libc स्रोत कोड पर * क्यों नहीं देख सकते हैं? – Will
क्योंकि मैं जीपीएल कोड के साथ हमारे मालिकाना कोड को प्रदूषित कर सकता हूं। बस यह कहा जा रहा है कि एक विशेष कार्य वह करेगा जो मुझे चाहिए वह समस्या नहीं है। –