我有一个为 ARM 目标构建的 C++ 代码,它使用专门从源代码为 ARM 硬件目标构建的 linaro 工具链(使用 softfp、mtune=cortex-a9 等......)有时,代码会因以下跟踪而崩溃。我已将 gdb 附加到正在运行的进程显然,在调用来自 libstdc++.so.6 的新运算符后,它似乎崩溃了几个调用。
我们目前没有异常处理代码,所以如果 new 失败并抛出异常,我认为它会中止/终止,消息如下:
Program received signal SIGABRT, Aborted.
但相反,它与 SIGSEGV 一起崩溃。
为什么呢?可能出了什么问题?
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x45c6b460 (LWP 1182)]
0x402fad12 in malloc_consolidate () from /lib/libc.so.6
#0 0x402fad12 in malloc_consolidate () from /lib/libc.so.6
#1 0x402fc498 in _int_malloc () from /lib/libc.so.6
#2 0x402fe414 in malloc () from /lib/libc.so.6
#3 0x401f54d6 in operator new(unsigned int) () from /lib/libstdc++.so.6
#4 0x400f30d4 in MyMsg::operator=(MyPkt*) () from /usr/lib/libmy-ARMV7AL.so
#5 0x400f322c in MyMsg::reply() () from /usr/lib/libmy-ARMV7AL.so
#6 0x0005a6a0 in MyManager::SendMessage (this=0x7188c8)
at MyManager.cpp:12973
#7 0x0004389c in My::Response (this=0x7188c8)
MyManager.cpp:5972