Nexus One / Android "CPU může být zavěšen" bug

hlasů
15

Píšu graficky intenzivní hra pro Nexus One, pomocí NDK (revize 4) a OpenGL ES 2.0. Jsme opravdu tlačit hardware tady, a ve většině případů to funguje dobře, kromě jednou za čas jsem dostal vážnou havárii s tímto log zprávy:

W / SharedBufferStack (398): waitForCondition (LockCondition) vypršel (identity = 9, status = 0). CPU může být zavěšen. snaží znovu.

Celý systém zablokuje, opakuje tuto zprávu znovu a znovu, a buď znovu po několika minutách nebo budeme muset restartovat ručně. Používáme Android OS 2.1, aktualizujte 1.

Znám pár dalších lidí tam venku viděl tuto chybu, někdy ve vztahu ke zvuku. V mém případě je to způsobeno SharedBufferStack, takže hádám, že je to problém OpenGL. Má někdo setkal to, a ještě lépe ji opravit? Nebo má někdo vědět, co se děje s SharedBufferStack, aby mi pomohl úzkých věci dolů?

Položena 24/06/2010 v 18:16
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
2

Nevěřím, že může dojít k audio kódu jako chyba, SharedBufferStack se používá pouze v povrchových knihovnách. S největší pravděpodobností se jedná o chybu v EGL swapBuffers nebo k provádění SurfaceFlinger, a měli byste ji podat do bug trackeru .

Odpovězeno 25/06/2010 v 08:46
zdroj uživatelem

hlasů
1

Dostal jsem CPU may be peggedzprávy na Logcat protože jsem měl ArrayBlockingQueue v mém kódu. Máte-li jakékoliv blokování fronty (jak se zdá být v případě audio vyrovnávacích pamětí), ujistěte se, že BlockingQueue.put (), pouze pokud jste načasování natolik, aby správně kontrolu BlockingQueue.take () prvky, aby se vytvořil prostor pro to. Anebo se podívat na použití BlockingQueue.offer () .

Odpovězeno 22/05/2011 v 19:42
zdroj uživatelem

hlasů
1

WaitForCondition () způsobí, že zamrznutí (systém zamrznutí).
Ale to není základních příčin. To se zdá být problém s

Audio-rámec (ur hra má zvuk?)
Nebo
The GL renderovací-subsystém .

Jakékoli „CPU-zavěšen“ zprávy v protokolu? Možná budete chtít podívat na tohle:
http://soledadpenades.com/2009/08/25/is-the-cpu-pegged-and-friends/

Odpovězeno 14/04/2011 v 13:22
zdroj uživatelem

hlasů
0

FWIW, Trefil jsem tento problém v poslední době při vývoji na platformě Android 2.3.4 s použitím GL ES 2 na Samsung Galaxy S.

Otázkou pro mě byla chyba v mé glDrawArrays volání - jsem vykreslování za konec vyrovnávací paměti, tj „počítat“ Byl jsem předáním byl vyšší než skutečný počet. Zajímavé je, že volání nehodil výjimku, ale to by občas dojít k problému, který jste popsán. Také vyrovnávací jsem skončil rendering vypadalo špatně, takže jsem věděl, že něco není v off. Dále jen „CPU může být navázána“ věc prostě dělal to více nepříjemné vypátrat skutečný problém.

Odpovězeno 20/07/2014 v 05:41
zdroj uživatelem

hlasů
0

Zdá se, že problém řidič s eglSwapBuffers ():

http://code.google.com/p/android/issues/detail?id=20833&q=cpu%20may%20be%20pegged&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars

Jeden řešením je zavolat glFinish()předchozí hovor se eglSwapBuffers()však bude indukovat hit výkonu.

Odpovězeno 18/12/2012 v 06:23
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more