由于“检测到堆栈损坏:中止”导致崩溃

时间:2010-12-17 15:55:28

标签: android stack-corruption

我最近收到了一位用户抱怨我的应用崩溃了。我从用户的错误日志中提取了以下内容,并且能够看到发生问题的原因:

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:8)

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

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

如果您有办法重现这一点,请在b.android.com上提交错误信息。