SIGSEGV
ライブラリコードで実行しているプログラムがあります。原因となっているステートメントを見ても、何も飛び出していませんSIGSEGV
(以下を参照)。しかし、コードは Intel の AES-NI を使用しており、私はそれに精通していません。
handle all
を引き起こしているトラップをキャッチすることを期待して発行しましSIGSEGV
たが、プログラムはトラップを通知するのではなく、クラッシュするだけです。
エラーの原因となっている CPU トラップを GDB に表示させるにはどうすればよいSIGSEGV
ですか?
Program received signal SIGSEGV, Segmentation fault.
0x00000000004ddf0b in CryptoPP::AESNI_Dec_Block(long long __vector&, long long __vector const*, unsigned int) (block=..., subkeys=0x7fffffffdc60, rounds=0x0)
at rijndael.cpp:1040
1040 block = _mm_aesdec_si128(block, subkeys[i+1]);
(gdb) p block
$1 = (__m128i &) @0x7fffffffcec0: {0x2e37c840668d6030, 0x431362358943e432}
(gdb) x/16b 0x7fffffffcec0
0x7fffffffcec0: 0x30 0x60 0x8d 0x66 0x40 0xc8 0x37 0x2e
0x7fffffffcec8: 0x32 0xe4 0x43 0x89 0x35 0x62 0x13 0x43