2010-05-11 7 views
6

Estoy obteniendo marcos descodificados de mi motor y mi reproducción usando SurfaceView en android. Pero se reproduce durante 2-3 segundos y luego mi aplicación falla con el error "depurador cometiendo suicidio para liberar al zombi".depurador cometiendo suicidio para liberar al zombi

Por favor, ayúdame.

Estoy usando Android SDK 2.1.

+13

¡Es como el mejor mensaje de error! – hannson

+1

Posible duplicado (y si no, la respuesta aceptada aún se aplica): http://stackoverflow.com/questions/2022868/android-application-failing-upon-user-scrolling-no-obvious-error –

+4

Se supone que debes matar zombies, no liberarlos. Los niños de hoy en día. – Amy

Respuesta

6

**** Pensé que era una alerta de juego, no un mensaje de registro de depuración de Android = | ****

proceso zombi

en UNIX y sistemas operativos basados ​​en Unix, un proceso zombie o proceso desaparecida es un proceso que ha finalizado su ejecución, pero aún tiene una entrada en la tabla de procesos. Esta entrada todavía se necesita para permitir que el proceso que inició el proceso (ahora zombie) lea su estado de salida. El término proceso zombie se deriva de la definición común de zombie: una persona no muerta. En la colorida metáfora del término, el proceso del niño ha muerto pero aún no ha sido cosechado. Además, a diferencia de los procesos normales, el comando kill no tiene ningún efecto en un proceso zombie.

Cuando finaliza un proceso, toda la memoria y los recursos asociados se desasignan para que puedan ser utilizados por otros procesos. Sin embargo, la entrada del proceso en la tabla de proceso permanece. El padre puede leer el estado de salida del niño ejecutando la llamada al sistema de espera, en qué etapa se elimina el zombi. La llamada de espera se puede ejecutar en código secuencial, pero se ejecuta comúnmente en un controlador para la señal SIGCHLD, que el padre recibe cada vez que un niño muere.

Después de eliminar el zombie, su ID de proceso y su entrada en la tabla de proceso pueden reutilizarse. Sin embargo, si un padre no puede llamar a la espera, el zombi quedará en la tabla de procesos. En algunas situaciones, esto puede ser deseable, por ejemplo, si el padre crea otro proceso hijo, garantiza que no se le asignará el mismo ID de proceso. En los sistemas modernos tipo UNIX (que cumplen con la especificación SUSv3 a este respecto), se aplica el siguiente caso especial: si el padre ignora explícitamente SIGCHLD configurando su controlador en SIG_IGN (en lugar de simplemente ignorar la señal por defecto) o tiene la bandera SA_NOCLDWAIT establecer, toda la información de estado de salida de niños será descartada y no se dejarán procesos zombies.

Un proceso zombie no es lo mismo que un proceso huérfano. Un proceso huérfano es un proceso que todavía se está ejecutando, pero cuyo padre ha muerto. No se convierten en procesos zombies; en cambio, son adoptados por init (proceso ID 1), que espera a sus hijos.

de WIKI! =)