отладчик совершает самоубийство, чтобы освободить зомби - PullRequest
6 голосов
/ 11 мая 2010

Я получаю декодированные кадры из своего движка и играю его с помощью SurfaceView в Android. Но он воспроизводится 2-3 секунды, а затем мое приложение вылетает с ошибкой «отладчик совершает самоубийство, чтобы освободить зомби».

Пожалуйста, помогите мне.

Я использую Android SDK 2.1.

1 Ответ

7 голосов
/ 18 июня 2010

**** Я думал, что это игровое предупреждение, а не сообщение журнала отладки Android = | ****

Зомби-процесс

В Unix и Unix-подобных компьютерных операционных системах процесс-зомби или несуществующий процесс - это процесс, который завершил выполнение, но все еще имеет запись в таблице процессов. Эта запись все еще необходима, чтобы процесс, запустивший (теперь зомби) процесс, мог прочитать его состояние завершения. Термин «процесс зомби» происходит от общего определения зомби - нежити. В красочной метафоре термина дочерний процесс умер, но еще не был пожнен. Кроме того, в отличие от обычных процессов, команда kill не влияет на процесс зомби.

Когда процесс заканчивается, вся память и ресурсы, связанные с ним, освобождаются, чтобы они могли использоваться другими процессами. Однако запись процесса в таблице процессов остается. Родитель может прочитать состояние выхода ребенка, выполнив системный вызов wait, на котором зомби удаляется. Вызов ожидания может быть выполнен в последовательном коде, но обычно он выполняется в обработчике для сигнала SIGCHLD, который родитель получает при смерти ребенка.

После удаления зомби его идентификатор процесса и запись в таблице процессов могут быть использованы повторно. Однако, если родитель не сможет вызвать wait, зомби останутся в таблице процессов. В некоторых ситуациях это может быть желательно, например, если родитель создает другой дочерний процесс, он гарантирует, что ему не будет присвоен тот же идентификатор процесса. В современных UNIX-подобных системах (которые соответствуют спецификации SUSv3 в этом отношении) применяется следующий особый случай: если родитель явно игнорирует SIGCHLD, устанавливая свой обработчик в SIG_IGN (а не просто игнорируя сигнал по умолчанию) или имеет флаг SA_NOCLDWAIT при установке все дочерние данные о состоянии выхода будут отброшены, а зомби-процессы не останутся.

Процесс зомби не совпадает с процессом-сиротой. Потерянный процесс - это процесс, который все еще выполняется, но родитель которого умер. Они не становятся зомби-процессами; вместо этого они принимаются init (идентификатор процесса 1), который ожидает своих потомков.

из Вики! =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...