我正在研究Android NDK中的pthread,它通过网络处理视频数据。
我遇到的问题是'检测到堆栈损坏:已中止'。所以我在application.mk中设置了-fstack-check,再次设置了FATAL SIGNAL 11 blabla ..
我在这个问题上的结论是关于堆栈大小。
当我使用窗口线程时,其堆栈大小默认设置为1kb,自动增加。
但是,我不知道pthread。
pthread会自动增加堆栈大小吗?
P.S。我将此线程附加到JavaVM。
答案 0 :(得分:0)
现货Android上,pthread堆栈默认分配为1MB。 (由于系统的工作方式,只有实际触摸的堆栈部分才能获得物理页面,因此对于许多线程,实际上只有几KB被使用。)
“堆栈损坏”消息表明某些东西已经破坏了堆栈,而不是你已经失败了。遇到这种情况的一种方法是注销堆栈分配的数组的末尾。 decode the stack trace进入日志文件并查看失败时的方法可能很有用。