2010-12-17 14 views
12

最近、私のアプリがクラッシュしたという苦情をユーザーから受け取りました。ユーザーのエラーログから次のような問題を抽出し、問題が発生した理由を確認できました。「スタックの破損が検出されました:異常終了」のクラッシュ

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でどのように処理しますか?

ありがとうございました!

+0

あなたのコードがURLを読み取っている場合は、[いくつかの推奨](http://comments.gmane.org/gmane.comp.handhelds.android.devel/91510)があります。 – khachik

+0

ホスト名はかなり長く見える – bigstones

+1

FQDNの253文字の制限をはるかに超えています。 – Blrfl

答えて

8

メッセージは、ネイティブスタックの破損を示します。スタックバッファオーバーフローを検出するコードは、gccフラグ "-fstack-protector"を使用すると挿入されます。

アプリにJNIコードがない場合、これはAndroidプラットフォームのバグである可能性があります。

これを再現する方法がある場合は、b.android.comにバグを報告してください。

+0

ありがとうございました!JNIコードはありません。純粋なJava ...問題は私がそれを再現できませんが、私のアプリのユーザーは毎回できるようです... – Jona

関連する問題