13

我最近收到一位用户的投诉,说我的应用程序崩溃了。我从用户的错误日志中提取了以下内容,并且能够看到为什么会出现问题:

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 中处理它?

谢谢你的帮助!

4

1 回答 1

11

该消息表明本机堆栈损坏。当使用 gcc 标志“-fstack-protector”时,插入检测堆栈缓冲区溢出的代码。

如果您的应用程序没有任何 JNI 代码,那么这很可能是 Android 平台中的一个错误。

如果您有办法重现此问题,请在 b.android.com 上提交错误并附上详细信息。

于 2010-12-17T22:13:56.727 回答