स्थिति: इसे हाल ही में Mac OS 10.8 और Xcode 4.4 के रूप में देखा गया है।
tl; डॉ: यह दो संदर्भों में हो सकता है: जब डिवाइस पर चल रहा हो और जब सिम्युलेटर पर चल रहा हो। डिवाइस को चलाते समय, डिस्कनेक्ट करने और डिवाइस को फिर से कनेक्ट करने से चीजें ठीक होती हैं।
माइक ऐश ने सुझाव दिया
launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove
यह हर समय काम नहीं करता है। वास्तव में, यह मेरे लिए कभी काम नहीं किया लेकिन यह स्पष्ट रूप से कुछ मामलों में काम करता है। अभी पता नहीं कौन से मामले हैं। तो यह कोशिश करने लायक है।
अन्यथा, इसे ठीक करने का एकमात्र ज्ञात तरीका उपयोगकर्ता लॉन्च को पुनरारंभ करना है। रिबूटिंग वह करेगा लेकिन कम कठोर / तेज तरीका है। आपको एक और व्यवस्थापक उपयोगकर्ता बनाने की आवश्यकता होगी, लेकिन आपको केवल एक बार ही ऐसा करना होगा। जब चीजें लड़खड़ाती हैं, तो अपने आप को लॉग आउट करें, उस उपयोगकर्ता के रूप में लॉग इन करें, और उस लॉन्चड को मारें जो आपके मुख्य उपयोगकर्ता से संबंधित है, जैसे;
sudo kill -9 `ps aux | egrep 'user_id .*[0-9] /sbin/launchd' | awk '{print $2}'`
के लिए अपना मुख्य उपयोगकर्ता नाम प्रतिस्थापित कर रहा है user_id
। आपके सामान्य उपयोगकर्ता के रूप में फिर से लॉग इन करने पर आप वापस एक स्थिति में आ जाते हैं। दर्दनाक, लेकिन पूर्ण रिबूट की तुलना में कम।
विवरण:
यह शेर / Xcode 4.2 के साथ अधिक बार होने लगा है। (व्यक्तिगत रूप से, मैंने इसे उस संयोजन से पहले कभी नहीं देखा था।)
बग लॉन्च करने में लगता है, जो ऐप प्रक्रिया को एक बच्चे के रूप में विरासत में मिला है जब डीबगर इसे मार डाले बिना डीबग करना बंद कर देता है। यह आमतौर पर एप्लिकेशन को एक ज़ोंबी बनने का संकेत देता है, जिसकी प्रक्रिया प्रक्रिया Z में होती है।
मूल मुद्दा बूटस्ट्रैप नाम सर्वर में प्रतीत होता है जिसे लॉन्च में लागू किया गया है। यह (हद तक कि मैं इसे समझता हूं) मैप्स पोर्ट्स के लिए ऐप आईडी को मैप करता है। जब बग को ट्रिगर किया जाता है, तो ऐप मर जाता है, लेकिन बूटस्ट्रैप सर्वर के नाम सर्वर मैप से साफ नहीं होता है और परिणामस्वरूप, बूटस्ट्रैप सर्वर ऐप के किसी अन्य उदाहरण को उसी नाम के तहत पंजीकृत होने की अनुमति देने से इनकार करता है।
यह उम्मीद की गई थी (टिप्पणियों को देखें) कि लॉन्चिंग के लिए मजबूर किया गया wait()
ज़ोंबी के लिए करने से चीजें ठीक हो जाएंगी, लेकिन ऐसा नहीं है। यह ज़ोंबी की स्थिति नहीं है कि मुख्य समस्या है (यही वजह है कि कुछ लाश सौम्य हैं), लेकिन बूटस्ट्रैप नाम सर्वर और हत्या के लॉन्च के इस कमी को साफ करने का कोई ज्ञात तरीका नहीं है।
ऐसा लगता है कि बग Xcode, gdb और उपयोगकर्ता लॉन्च के बीच कुछ खराब होने से चालू है। मैंने सिर्फ iphone सिम्युलेटर में एक ऐप चलाकर वेज को दोहराया, जीडीबी के भीतर बंद कर दिया, और फिर आईपैड सिम्युलेटर के लिए एक बिल्ड और रन किया। यह स्विचिंग सिमुलेटर (iOS 4.3 / iOS 5, iPad / iPhone) के प्रति संवेदनशील प्रतीत होता है। यह हर समय नहीं होता है, लेकिन काफी बार जब मैं सिमुलेटर को बहुत बदल रहा हूं।
लॉगिन करते समय लॉन्चिंग किलिंग आपके सत्र को खराब कर देगी। लॉग आउट करना और लॉग इन करना उपयोगकर्ता लॉन्च को नहीं मारता है; OS X मौजूदा प्रक्रिया को इधर-उधर रखता है। एक रिबूट चीजों को ठीक कर देगा, लेकिन यह दर्दनाक है। ऊपर दिए गए निर्देश तेज हैं।
मैं एक बग प्रस्तुत किया है Apple, FWIW। rdar: // 10330930