सवाल Automatically release mutex on crashes in Unix 2010 में पीठ पर एक टिप्पणी में, jilles ने दावा किया: क्योंकि glibc खतरनाक शॉर्टकट लेताग्लिब/एनपीटीएल/लिनक्स मजबूत म्यूटेक्स में रेस हालत?
glibc की मजबूत mutexes इतनी तेजी से कर रहे हैं। इस बात की कोई गारंटी नहीं है कि म्यूटेक्स अभी भी मौजूद है जब कर्नेल इसे "EOWNERDEAD का कारण बनता है" के रूप में चिह्नित करता है। यदि म्यूटेक्स नष्ट हो गया था और स्मृति को मेमोरी मैप किए गए फ़ाइल द्वारा प्रतिस्थापित किया गया था, जिसमें अंतिम स्थान थ्रेड की आईडी सही जगह पर होती है और अंतिम स्वामित्व थ्रेड लॉक शब्द लिखने के बाद ही समाप्त हो जाता है (लेकिन पूरी तरह से म्यूटेक्स को अपनी सूची से हटाकर स्वामित्व वाले म्यूटेक्स), फ़ाइल दूषित है। सोलारिस और इच्छा-मुक्त-फ्रीबीएसडी 9 मजबूत म्यूटेक्स धीमे होते हैं क्योंकि वे इस जोखिम को नहीं लेना चाहते हैं।
मैं दावे के कोई मतलब नहीं है, क्योंकि एक म्युटेक्स नष्ट कानूनी जब तक कि यह अनलॉक रहने के दौरान (और इस प्रकार किसी भी धागा की मजबूत सूची में नहीं) नहीं है। मुझे इस तरह के एक बग/मुद्दे की तलाश में कोई संदर्भ नहीं मिल रहा है। दावा सिर्फ गलत था?
कारण मैं पूछता हूं और मुझे दिलचस्पी है कि यह एक ही लिनक्स मजबूत-म्यूटेक्स आदिम पर बनाए गए अपने स्वयं के कार्यान्वयन की शुद्धता के लिए प्रासंगिक है।
ओएमजी, त्रुटि नाम में एनईआरडी है –
ऐसा लगता है कि पुराने वीएमए आधारित दृष्टिकोण में कुछ समस्याएं थीं; http://www.kernel.org/doc/Documentation/robust-futexes.txt। हालांकि, अगर मैं इसे सही ढंग से पढ़ता हूं तो सूची उपयोगकर्ता स्पेस मेमोरी में रखी जाती है - तो अगर आप स्मृति दूषित हैं तो आप क्या कर सकते हैं? हालांकि इसे साझा स्मृति को दूषित करने के विशेष मामले के रूप में देखा जा सकता है। – nos
हां, मैं देखता हूं कि अगर प्रक्रिया अमोक और क्लॉबर्स चलाती है तो सूची या यहां तक कि म्यूटेक्स सामग्री दूषित हो सकती है। क्या इस मुद्दे का वर्णन किया जा रहा है? मैं उचित व्यवहार सुनिश्चित करने के बारे में चिंतित नहीं हूं जब म्यूटेक्स तक पहुंचने वाली प्रक्रिया ने अपरिभाषित व्यवहार का आह्वान किया है; मैं मजबूत म्यूटेक्स के अन्यथा-अच्छी तरह से परिभाषित उपयोग में कुछ दौड़ की स्थिति की संभावना के बारे में चिंतित हूं। –