डीबग करने के विचारों की तलाश पिछले कुछ महीनों में मुझे हमारी सेवाओं में से एक के बारे में क्यूए से कुछ रिपोर्ट प्राप्त हुई हैं। WinDbg का उपयोग करके एक हैंग डंप की जांच करने पर, हर बार जब मैंने एक ही चीज़ खोज ली: लोडर लॉक महत्वपूर्ण खंड लॉक है लेकिन थ्रेड का मालिक कहीं भी नहीं मिला है। चूंकि धागा चला गया है और एकमात्र ट्रेस जिसे मैं देख सकता हूं वह एक वैश्विक महत्वपूर्ण खंड है जो पीछे छोड़ दिया गया है, मुझे नहीं पता कि थ्रेड थ्रेड पर कौन सा कोड चल रहा था, या यहां तक कि डीएलएल जो थ्रेड आया था, यह भी एक हो सकता है हमारा (यानी तृतीय पक्ष विक्रेता)।एक मुश्किल विंडोज सेवा स्टार्टअप gremlin
यह समस्या बहुत ही छिड़काव है, केवल पिछले 6 महीनों में यह जंगली में स्वाभाविक रूप से होने वाले 3-4 बार देखा जाता है। अन्य सभी बार, सेवा पूरी तरह से चलती है। तो यह मुझे विश्वास दिलाता है कि यह किसी प्रकार का समय/दौड़ की स्थिति है।
हाल ही में, मैंने इसे अपने आप को समझने के लिए इसे लेने का फैसला किया है। मैं WinTask स्क्रिप्ट के साथ एक मशीन सेटअप करता हूं जो लगातार सेवा शुरू/बंद करता है। अच्छी खबर यह है कि 5-6 घंटे के भीतर मैं समस्या का पुनरुत्पादन कर सकता हूं।
अब अगले भाग के लिए: मैं इसे अलग कैसे कर सकता हूं?
इस्तेमाल किया "डिबगर" gflags छवि सेटिंग्स में क्षेत्र स्वतः CDB के तहत सेवा को चलाने के लिए जब भी यह शुरू होता है:
यह वही है मैं अब तक की कोशिश की है है। अब तक यह दो दिनों तक चल रहा है और कभी नहीं लटका है, इसलिए मैं सोच रहा हूं कि डीबगर ने इस मुद्दे को अदृश्य बनाने के लिए पर्याप्त समय परिवर्तन किया है।
डाउनलोड किए गए एप्लिकेशन सत्यापनकर्ता और उस के साथ चलाने के लिए प्रक्रिया को कॉन्फ़िगर किया गया। एक पूरी तरह से असंबंधित बग मिला जहां हम CComBSTR अस्थायी चर बनाते हैं, इसे एक वैरिएंट को असाइन करते हैं और संस्करण को एक फ़ंक्शन कॉल में पास करते हैं, भले ही CCOMBSTR ने उस बिंदु से आवंटित स्ट्रिंग को लंबे समय तक हटा दिया हो। विश्वास न करें कि यह बग संबंधित है क्योंकि स्ट्रिंग केवल पढ़ने के लिए है और जिस धागे पर चल रहा है वह वह नहीं है जो मर रहा है।
यदि आप लोग ऐसा कुछ सोच सकते हैं जो मैं विचार नहीं कर रहा हूं तो मैं यह पोस्ट कर रहा हूं।
हालांकि मैं एक विंडोज़ उपयोगिता थी जो कृत्रिम रूप से सीपीयू पर लोड डालती थी और दौड़ की स्थिति को पॉप अप करने के लिए अन्य चीजें करता था और मैंने सोचा कि एप्लिकेशन सत्यापनकर्ता ने ऐसी चीज की है, लेकिन स्पष्ट रूप से ऐसा नहीं है। क्या कोई जानता है कि मैं क्या ले रहा हूं, या क्या मैंने बस इसे सपना देखा?
जब तक सप्ताहांत में कुछ नहीं होता है तो मेरा अगला कदम सभी डिबगर्स को अक्षम करना होगा, स्टॉक पर वापस जाना होगा और THREAD_ATTACH/THREAD_DETACH ईवेंट रिकॉर्ड करने के लिए डेलमेन में से एक को हैक करना होगा। कम से कम मैं उस थ्रेड को रोक सकता हूं जो इसे बनने पर मर रहा है। वह कुछ प्रकाश डाल सकता है।
-1 ?? क्यूं कर?? क्या मैंने पर्याप्त जानकारी नहीं दिखाई? क्या ऐसा लगता है कि मैंने पर्याप्त शोध नहीं किया? जब लोग सॉफ़्टवेयर विकास समस्याओं से चिपक जाते हैं तो क्या लोग स्टैक ओवरफ्लो से नहीं पूछते हैं? – DXM
हां, यह एक बिल्कुल मान्य सवाल है। एकमात्र चीज जो इसे बेहतर बनाती है, कुछ कोड पोस्ट करेगी। मुझे लगता है कि इसीलिए किसी ने ड्राइव-डाउन किया है। –
यह एक उत्पादन ऐप है जो 10 से अधिक वर्षों से बाजार में रहा है। मुझे यह भी नहीं पता कि डीएलएल इस मुद्दे का कारण बन रहा है, अकेले बंद स्रोत कंपनी कोड ऑनलाइन पोस्ट करने दें, भले ही मैं स्रोत कोड की 5 एम लाइनों की प्रतिलिपि/पेस्ट कर सकूं। पता नहीं क्या बदल गया है, लेकिन पहली बार मैंने 6 महीने पहले समस्या देखी थी। – DXM