Co dokładnie powoduje błąd „spin on suspend” w systemie Android?

Obecnie mam problem z debugowaniem kodu Android, który opiera się na rodzimej bibliotece. Jedna natywna rozmowa wydaje się szczególnie podatna na błąd „spin on suspend”. Zwykle manifestuje się tak:

threadid=2: spin on suspend #2 threadid=48 (pcf=3)

Do tej pory nie byłem w stanie dokładnie określić, co tutaj zawodzi, z tym wyjątkiem, że po około 10 tych komunikatach moja aplikacja napotyka aSIGSTKFLT i wychodzi. Za każdym razem pierwszy wątek to GC, a drugi wątek jest tym, co aktualnie wykonuje natywny kod. Część stosu wydrukowana wraz z tym komunikatem zawsze ma metodę natywną na szczycie stosu.

Co dokładnie dzieje się, gdy Dalvik narzeka na to i jak mogę zacząć debugować przyczynę, aby to naprawić?

EDYTOWAĆ: Ciekawa zmarszczka - po wprowadzeniu zmian przez rodzimego programistę czasami widzę następujący błąd:

PopFrame missed the break
VM aborting
Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1)

Jest też dla mnie bardzo dziwne, że zrzut wątku pokazuje moją rodzimą metodę na szczycie stosu, ale stan wątku jestRUNNABLE, nieNATIVE - jak to możliwe?

questionAnswers(1)

yourAnswerToTheQuestion