【发布时间】:2021-05-17 08:04:06
【问题描述】:
我有一个在 arm64-v8a Android 平台上转移的多线程 CPP 程序(一个侦听器线程、一个数据处理器线程)。
最近由于下图相同的原因,它继续崩溃:
E CRASH : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr fffffffffffffffc
据我所知,由于fault addr 保持不变,它不可能是“访问数组越界”或“取消引用 NULL/未初始化的指针”之类的情况,所以我能想到的唯一原因是“堆栈溢出”,对吗?
那么我的程序到底发生了什么,更重要的是,我该如何找到真正的原因和解决方案?
提前致谢。
【问题讨论】:
-
@MorrisonChang 是的,我检查了你提到的问题,但没有找到我的问题的解决方案。我想知道为什么故障地址总是
fffffffffffffffc。 -
真正发生的是你取消了一个指针,它的值全是
Fs。在你修复它之前,没有理由改变它。 -
@user207421 我说的是在同一个地址上崩溃了 100 次,是否有可能在不同的运行之间同一个指针指向同一个地址?
标签: android c++ segmentation-fault stack-overflow arm64