2010-05-11 8 views
6

Otrzymuję dekodowane ramki z mojego silnika i moje odtwarzanie go przy użyciu SurfaceView w Androidzie. Ale gra przez 2-3 sekundy, a następnie moja aplikacja ulega awarii z błędem "debugger popełnia samobójstwo, aby uwolnić zombie".debugger popełnienie samobójstwa, aby uwolnić zombie

Proszę, pomóż mi.

Używam Androida SDK 2.1.

+13

To jak najfajniejsza wiadomość o błędzie KIEDYKOLWIEK! – hannson

+1

Możliwe duplikowanie (a jeśli nie, zaakceptowana odpowiedź nadal obowiązuje): http://stackoverflow.com/questions/2022868/android-application-failing-upon-user-scrolling-no-obvious-error –

+4

Powinieneś zabijaj zombie, a nie wyzwól je. Dzieci w tych czasach. – Amy

Odpowiedz

6

**** Myślałem, że to komunikat o grze, a nie komunikat dziennika systemu Android = | ****

Zombie proces

Na Unix i uniksowych systemów operacyjnych komputera, proces zombie lub procesu nieistniejącego jest to proces, który zakończył realizację, ale nadal posiada wpis w tablicy procesów. Ten wpis jest nadal potrzebny, aby umożliwić procesowi, który rozpoczął (teraz zombie) proces, odczytanie jego statusu wyjścia. Termin proces zombie wywodzi się ze wspólnej definicji zombie - osoby nieumarłej. W metaforze kolorowej tego terminu proces potomny umarł, ale nie został jeszcze zebrany. Ponadto, w przeciwieństwie do normalnych procesów, polecenie kill nie ma wpływu na proces zombie.

Po zakończeniu procesu cała pamięć i zasoby powiązane z nim zostają zwolnione, aby mogły być używane przez inne procesy. Jednak wpis procesu w tabeli procesu pozostaje. Rodzic może odczytać status wyjścia dziecka, wykonując wywołanie systemowe oczekiwania, na którym to etapie usuwa się zombie. Wywołanie oczekiwania może być wykonane w kodzie sekwencyjnym, ale jest zwykle wykonywane w module obsługi dla sygnału SIGCHLD, który rodzic otrzymuje po śmierci dziecka.

Po usunięciu zombie, jego identyfikator procesu i wpis w tabeli procesu mogą być ponownie wykorzystane. Jeśli jednak rodzic nie zadzwoni, zombie pozostanie w tabeli procesu. W niektórych sytuacjach może to być pożądane, na przykład jeśli rodzic utworzy inny proces potomny, zapewnia to, że nie zostanie mu przydzielony ten sam identyfikator procesu. W nowoczesnych systemach typu UNIX (które są zgodne ze specyfikacją SUSv3 w tym zakresie), ma zastosowanie następujący specjalny przypadek: jeśli rodzic jawnie ignoruje SIGCHLD, ustawiając jego program obsługi na SIG_IGN (zamiast po prostu domyślnie ignoruje ten sygnał) lub ma flagę SA_NOCLDWAIT ustawione, wszystkie informacje o statusie wyjścia dziecka zostaną odrzucone, a procesy zombie nie zostaną pozostawione.

Proces zombie to nie to samo, co proces osierocony. Proces osierocony jest procesem, który wciąż jest wykonywany, ale jego rodzic zmarł. Nie stają się procesami zombie; zamiast tego są one adoptowane przez init (process ID 1), który czeka na swoje dzieci.

od WIKI! =)