2010-05-11 2 views
6

내 엔진에서 디코딩 된 프레임이 표시되고 안드로이드의 SurfaceView를 사용하여 재생 중입니다. 그러나 2 ~ 3 초 동안 재생되고 응용 프로그램이 "디버거가 좀비를 해방하기 위해 자살했습니다."라는 오류로 충돌합니다.좀비를 풀기 위해 자살하는 디버거

도와주세요.

Android SDK 2.1을 사용하고 있습니다.

+13

그게 가장 멋진 오류 메시지예요! – hannson

+1

가능한 복제본입니다 (허용되지 않은 경우에도 여전히 허용됨). http://stackoverflow.com/questions/2022868/android-application-failing-upon-user-scrolling-no-obvious-error –

+4

좀비를 죽이고, 그들을 자유롭게하지 마라. 요즘 아이들. – Amy

답변

6

**** 안드로이드 디버그 로그 메시지가 아닌 게임 경고라고 생각했습니다. ****

유닉스와 같은 컴퓨터 운영 체제, 좀비 프로세스 또는 소멸 과정에

좀비 프로세스는 실행을 완료 여전히 프로세스 테이블에 항목이있는 과정입니다. 이 항목은 (지금은 좀비) 프로세스를 시작한 프로세스가 종료 상태를 읽을 수 있도록하기 위해 여전히 필요합니다. 좀비 프로세스라는 용어는 좀비 (unobad person)라는 일반적인 정의에서 파생됩니다. 용어의 다채로운 은유에서, 아동 과정은 죽었지 만 아직 수확되지 않았다. 또한 일반 프로세스와 달리 kill 명령은 좀비 프로세스에는 영향을 미치지 않습니다.

프로세스가 종료되면 해당 프로세스와 관련된 모든 메모리와 리소스가 할당 해제되어 다른 프로세스에서 사용할 수 있습니다. 그러나 프로세스 테이블에 프로세스의 항목이 남아 있습니다. 부모는 wait 시스템 호출을 실행하여 자식의 종료 상태를 읽을 수 있습니다.이 단계에서 좀비가 제거됩니다. 대기 호출은 순차적 코드로 실행될 수 있지만 일반적으로 자식이 사망 할 때마다 부모가받는 SIGCHLD 신호에 대한 처리기에서 실행됩니다.

좀비가 제거되면 프로세스 ID와 프로세스 테이블의 항목을 다시 사용할 수 있습니다. 그러나 부모가 대기 호출에 실패하면 좀비는 프로세스 테이블에 남아있게됩니다. 어떤 상황에서는 이것이 바람직 할 수 있습니다. 예를 들어 부모 프로세스가 다른 프로세스를 작성하면 동일한 프로세스 ID가 할당되지 않도록합니다. 현대의 유닉스 계열 시스템 (이 관점에서 SUSv3 사양을 준수)에서는 다음과 같은 특수한 경우가 적용됩니다. 부모가 SIG_IGN을 처리기로 설정하여 명시 적으로 SIGCHLD를 무시하고 (단순히 기본적으로 신호를 무시하는 것이 아니라) SA_NOCLDWAIT 플래그 설정하면 모든 하위 종료 상태 정보가 삭제되고 좀비 프로세스가 남아 있지 않습니다.

좀비 프로세스는 고아 프로세스와 동일하지 않습니다. 고아 프로세스는 여전히 실행 중이지만 상위 프로세스가 종료 된 프로세스입니다. 그들은 좀비 프로세스가되지 않습니다. 대신, init (프로세스 ID 1)에 의해 채택되며 자식에 대해 대기합니다.

WIKI! =)