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

Jon*_*ona 13 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.
Run Code Online (Sandbox Code Playgroud)

检测到堆栈损坏.很好,所以我怎么知道为什么会这样?

我认为这个问题正在这个特定的类中发生,因为我希望在它死之前有更多的日志输出.此类使用套接字下载播放列表并解析它.我怎么能破坏堆栈?我已经处理过C/C++中的堆栈溢出,但是我如何在Java中处理它?

谢谢你的帮助!

fad*_*den 9

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

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

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