สถานะ:สิ่งนี้ถูกมองว่าเป็นเมื่อเร็ว ๆ นี้เป็น Mac OS 10.8 และ Xcode 4.4
tl; dr:สิ่งนี้สามารถเกิดขึ้นได้ในสองบริบท: เมื่อใช้งานบนอุปกรณ์และเมื่อทำงานกับเครื่องจำลอง เมื่อทำงานบนอุปกรณ์การตัดการเชื่อมต่อและเชื่อมต่ออุปกรณ์ใหม่ดูเหมือนจะแก้ไขสิ่งต่าง ๆ
ไมค์แอชแนะนำ
launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove
มันไม่ทำงานตลอดเวลา ที่จริงแล้วมันไม่ได้ผลสำหรับฉัน แต่มันใช้ได้ผลในบางกรณี แค่ไม่รู้ว่ากรณีใด ดังนั้นมันจึงคุ้มค่าที่จะลอง
มิฉะนั้นวิธีเดียวที่ทราบในการแก้ไขปัญหานี้คือการรีสตาร์ทผู้ใช้ launchd การรีบูตเครื่องจะทำเช่นนั้น แต่มีวิธีที่รุนแรง / เร็วกว่าน้อยกว่า คุณจะต้องสร้างผู้ใช้ผู้ดูแลระบบคนอื่น แต่คุณต้องทำครั้งเดียวเท่านั้น เมื่อสิ่งต่างๆเข้าสู่ระบบออกจากตัวคุณเข้าสู่ระบบในฐานะผู้ใช้รายนั้นและฆ่า launchd ที่เป็นของผู้ใช้หลักของคุณเช่น
sudo kill -9 `ps aux | egrep 'user_id .*[0-9] /sbin/launchd' | awk '{print $2}'`
user_id
แทนชื่อผู้ใช้หลักของคุณสำหรับ การเข้าสู่ระบบอีกครั้งเมื่อผู้ใช้ปกติของคุณพาคุณกลับสู่สถานะมีสติ ค่อนข้างเจ็บปวด แต่น้อยกว่าการรีบูทเต็มรูปแบบ
รายละเอียด:
สิ่งนี้เริ่มเกิดขึ้นบ่อยขึ้นกับ Lion / Xcode 4.2 (โดยส่วนตัวฉันไม่เคยเห็นมาก่อนหน้าชุดค่าผสมนั้น)
ข้อผิดพลาดน่าจะเป็นใน launchd ซึ่งสืบทอดกระบวนการแอปเป็นลูกเมื่อดีบักเกอร์หยุดการดีบักโดยไม่ฆ่ามัน โดยปกติจะมีการส่งสัญญาณโดยแอปกลายเป็นซอมบี้โดยมีสถานะกระบวนการของ Z เป็น ps
ปัญหาหลักดูเหมือนจะอยู่ในเซิร์ฟเวอร์ชื่อ bootstrap ซึ่งมีการใช้งานใน launchd (เท่าที่ฉันเข้าใจ) นี้แมปรหัสแอปไปยังพอร์ตเครื่อง เมื่อมีการเรียกใช้ข้อผิดพลาดแอพจะตาย แต่ไม่ได้ล้างออกจากแผนผังเซิร์ฟเวอร์ชื่อเซิร์ฟเวอร์ของ bootstrap และด้วยเหตุนี้เซิร์ฟเวอร์ bootstrap ปฏิเสธที่จะอนุญาตให้มีการลงทะเบียนอินสแตนซ์อื่นของแอปภายใต้ชื่อเดียวกัน
หวังว่า (ดูความคิดเห็น) ที่บังคับให้ launchd wait()
สำหรับซอมบี้จะแก้ไขสิ่งต่าง ๆ แต่มันก็ไม่ได้ ไม่ใช่สถานะซอมบี้ที่เป็นปัญหาหลัก (ซึ่งเป็นสาเหตุให้ซอมบี้บางตัวไม่เป็นพิษเป็นภัย) แต่เป็นเซิร์ฟเวอร์ชื่อ bootstrap และไม่มีทางรู้แน่ชัดว่าการกำจัด launchd นี้สั้นเพียงใด
ดูเหมือนว่าข้อผิดพลาดจะถูกเรียกโดยสิ่งที่ไม่ดีระหว่าง Xcode, gdb และผู้ใช้ launchd ฉันเพิ่งกดลิ่มซ้ำโดยเรียกใช้แอปในเครื่องจำลอง iPhone โดยหยุดทำงานภายใน gdb จากนั้นทำการสร้างและเรียกใช้ไปยังเครื่องจำลอง iPad ดูเหมือนจะอ่อนไหวต่อการสลับการจำลอง (iOS 4.3 / iOS 5, iPad / iPhone) มันไม่ได้เกิดขึ้นตลอดเวลา แต่ค่อนข้างบ่อยเมื่อฉันเปลี่ยนเครื่องจำลองจำนวนมาก
การฆ่า launchd ในขณะที่คุณล็อกอินจะทำให้เซสชันของคุณแย่ลง การออกจากระบบและการลงชื่อกลับเข้าใช้ไม่ได้ทำให้ผู้ใช้เปิดใช้ OS X คอยดูแลกระบวนการที่มีอยู่ การรีบูตจะแก้ไขสิ่งต่าง ๆ แต่มันเจ็บปวด คำแนะนำข้างต้นเร็วกว่า
ฉันส่งข้อบกพร่องไปยัง Apple, FWIW แล้ว rdar: // 10330930