상태: 최근 Mac OS 10.8 및 Xcode 4.4로 표시되었습니다.
tl; dr : 두 가지 상황에서 발생할 수 있습니다 : 장치에서 실행할 때와 시뮬레이터에서 실행할 때. 장치에서 실행할 때 장치를 분리했다가 다시 연결하면 문제가 해결되는 것 같습니다.
마이크 애쉬 제안
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
. 일반 사용자가 다시 정상 상태로 돌아 오면 다시 로그인하십시오. 고통 스럽지만 전체 재부팅보다 덜합니다.
세부:
이것은 Lion / Xcode 4.2에서 더 자주 시작되었습니다. (개인적으로, 나는 그 조합 전에 그것을 본 적이 없습니다.)
디버거가 버그를 죽이지 않고 디버깅을 중단하면 앱 프로세스를 자식으로 상속하는 버그가 시작된 것 같습니다. 이것은 일반적으로 응용 프로그램이 좀비가되고 신호 상태가 Z 인 Zs로 표시됩니다.
핵심 문제는 시작시 구현 된 부트 스트랩 이름 서버에있는 것으로 보입니다. 이것은 (내가 이해하는 한) 앱 ID를 마하 포트에 매핑합니다. 버그가 트리거되면 앱이 종료되지만 부트 스트랩 서버의 이름 서버 맵에서 정리되지 않으므로 부트 스트랩 서버는 동일한 이름으로 앱의 다른 인스턴스를 등록하는 것을 거부합니다.
wait()
좀비 를 강제로 발사하면 문제가 해결 되길 바라지 만 (댓글 참조) 그렇지 않습니다. 핵심 문제인 좀비 상태가 아니기 때문에 (일부 좀비가 양성인 이유) 부트 스트랩 이름 서버이며이 짧은 킬링 런칭을 해결할 방법이 없습니다.
Xcode, gdb 및 사용자가 시작한 것 사이에 문제가 발생하여 버그가 발생한 것처럼 보입니다. 방금 iphone 시뮬레이터에서 앱을 실행하고 gdb 내에서 중지 한 다음 빌드를 수행하고 ipad 시뮬레이터로 실행하여 웨지를 반복했습니다. 스위칭 시뮬레이터 (iOS 4.3 / iOS 5, iPad / iPhone)에 민감한 것으로 보입니다. 시뮬레이터를 많이 전환 할 때 항상 발생하지는 않지만 상당히 자주 발생합니다.
로그인 한 상태에서 킬을 시작하면 세션이 중단됩니다. 로그 아웃했다가 다시 로그인해도 사용자가 시작한 것이 아닙니다. OS X은 기존 프로세스를 유지합니다. 재부팅하면 문제가 해결되지만 고통 스럽습니다. 위의 지침이 더 빠릅니다.
FWIW Apple에 버그를 제출했습니다. 레이더 : // 10330930