为什么SIGSEGV崩溃的故障地址保持不变
Why the fault address of the SIGSEGV crash remains the same?
我有一个多线程CPP程序(一个侦听器线程,一个数据处理器线程(在arm64-v8a Android平台上进行了迁移。
最近,由于以下相同的原因,它继续崩溃:
E CRASH : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr fffffffffffffffc
据我所知,由于fault addr
保持不变,它不可能是像";访问数组越界";或";取消引用NULL/未初始化指针";,所以我能想到的唯一原因是";堆栈溢出";,我说得对吗?
那么,我的程序到底发生了什么,更重要的是,我该如何找到真正的原因和解决方案呢?
提前谢谢。
故障地址保持不变并不意味着您可以排除您提到的问题。事实上,在我看来,可能是在执行NULL值的指针运算(例如数组索引(,导致-4
被用作地址。
您可以在调试器下运行程序,或者至少使用调试器分析核心转储。此外,请使用{内存、地址、线程}消毒器或类似的检测工具。
相关文章:
- 分段故障(堆芯转储)矢量
- 将数组的地址分配给变量并删除
- 空基优化子对象的地址
- C++中的动态铸造故障
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 在C++中打印指向不同基元数据类型的指针的内存地址
- vscode g++链路故障:体系结构x86_64的未定义符号
- 访问被拒绝后,c++中的故障保护代码
- 如何在c++程序中找到函数的地址
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 被解释为低级别const的const对象的地址
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 面临分段故障 使用 ffmpeg 读取视频时,因为"pFormatCtx-> streams [i]-> codecpar"的地址0x00
- C AVX2:访问数组数组中的地址时SEG故障
- Android原生libc信号11(SIGSEGV),代码2(SEGV_ACCERR),故障地址
- 为什么在 32 位 ARM 平台上为 SIGSEGV 0x00000006故障地址
- 导致seg故障的传递值变量的地址
- 段故障。地址0x0不是堆叠的、恶意的或(最近)释放的
- "detects_simple_anagram"中的致命错误:地址 0x00000000 处的内存访问冲突:故障地址处没有映射