ARM ハードウェア ターゲット用のソースから特別にビルドされた linaro ツールチェーンを使用して ARM ターゲット用にビルドされた C++ コードがあります (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