Что именно вызывает ошибку «вращение при приостановке» в Android?

В настоящее время у меня возникают проблемы с отладкой некоторого кода Android, который использует нативную библиотеку. В частности, один нативный вызов склонен к этой ошибке «вращение при приостановке». Обычно это выглядит так:

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

До сих пор я не смог точно определить, что здесь не работает, за исключением того, что после примерно 10 из этих сообщений мое приложение обнаруживаетSIGSTKFLT и выходит. Каждый раз первый поток - это GC, а второй поток - это любой поток, который в данный момент выполняет собственный код. Часть стека, напечатанная вместе с этим сообщением, всегда имеет собственный метод наверху стека.

Что именно происходит, когда Дальвик жалуется на это, и как я могу начать отлаживать причину, чтобы исправить ее?

РЕДАКТИРОВАТЬ: Интересная складка - после того, как собственный разработчик внес некоторые изменения, я теперь иногда вижу следующую ошибку:

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

Мне также очень странно, что дамп потока показывает мой собственный метод наверху стека, но состояние потокаRUNNABLEнеNATIVE - как это может быть возможно?

Ответы на вопрос(1)

Ваш ответ на вопрос