Сбой из-за "обнаружения повреждения стека: прервано" - PullRequest
12 голосов
/ 17 декабря 2010

Недавно я получил от пользователя жалобу на сбой моего приложения. Я извлек следующую информацию из журналов ошибок пользователя и смог понять причину возникновения проблем:

12-17 10:31:12.446 I/PLAYLIST( 3158): PreparePlaylist
12-17 10:31:12.446 I/PLAYLIST( 3158): URL: http://f69cbd7a-3d91-4bf5-b4c6-ddb1175cf9e9.d40f2093-2013-4ad9-aec2-e99b015d61ca.070305e7-a706-4626-9ecb-777835065841.groovera.com/listen.pls
12-17 10:31:12.456 F/unknown ( 3158): stack corruption detected: aborted
12-17 10:31:12.466 D/Zygote  ( 2204): Process 3158 terminated by signal (6)
12-17 10:31:12.471 I/ActivityManager( 2256): Process com.android.Player:remote (pid 3158) has died.

Обнаружено повреждение стека. Отлично, как мне узнать, почему это происходит?

Я думаю, что проблема происходит в этом конкретном классе, так как я ожидал от него большего количества выводимых журналов, прежде чем он умер. Этот класс использует сокеты для загрузки плейлиста и его анализа. Как я могу повредить стек? Я имел дело с переполнением стека в C / C ++, но как мне справиться с этим в Java?

Спасибо за вашу помощь!

1 Ответ

8 голосов
/ 18 декабря 2010

Сообщение указывает на повреждение собственного стека.Код для обнаружения переполнения буфера стека вставляется при использовании gcc-флага "-fstack-protector".

Если в вашем приложении нет кода JNI, то это вполне может быть ошибкой на платформе Android.

Если у вас есть способ воспроизвести это, пожалуйста, сообщите об ошибке на b.android.com с подробной информацией.

...