статус: це спостерігалося зовсім недавно як 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 у ps.
Основна проблема, як видається, знаходиться на сервері імен завантажувальної машини, який реалізований при запуску. Це (наскільки я це розумію) відображає ідентифікатори додатків для обробки портів. Коли помилка спрацьовує, додаток гине, але не видаляється з карти сервера імен сервера завантажувального сервера, і, як результат, сервер завантаження відмовляється дозволити реєструвати інший екземпляр програми під тим самим іменем.
Сподівалося (див. Коментарі), що примусовий запуск на wait()
зомбі виправить речі, але це не так. Основним завданням є не статус зомбі (саме тому деякі зомбі є доброякісними), але сервер імен завантажувального імені, і немає відомого способу очистити цю невдачу вбивства.
Схоже, помилку викликає щось погане між Xcode, gdb та запуском користувача. Я щойно повторив клин, запустивши додаток у імітаторі iphone, зупинивши його в gdb, а потім зробивши збірку та запустіть до симулятора ipad. Здається, він чутливий до переключення тренажерів (iOS 4.3 / iOS 5, iPad / iPhone). Це не відбувається постійно, але досить часто, коли я сильно перемикаю тренажери.
Убивання запуску під час входу в систему призведе до скасування вашого сеансу. Вихід із системи та вхід у систему не вбиває запускається користувача; OS X зберігає існуючий процес навколо. Перезавантаження виправить речі, але це боляче. Наведені вище інструкції швидше.
Я подав помилку в Apple, FWIW. rdar: // 10330930