2

アプリケーションのクラッシュを把握しようとしていました。クラッシュは、ストレス テストで発生します。クラッシュ時にVIRTは約 19 ギガで、RES2.1 ギガです。これは、システムに 3 ギガの物理メモリと 5 ギガのスワップ スペースがあることを示しています。

アプリケーションがクラッシュした場合、正しいシンボルがロードされていても、コア ダンプはスタック strace にシンボルを提供しません。しかし、奇妙な動作に気付きました。コール スタックの一番下が null です。

(gdb) bt
#0  0x00002adaea9df74d in ?? ()
#1  0x00002aacc94ff700 in ?? ()
#2  0x00000000004f9023 in ?? ()
#3  0x00002aae2b8054e0 in ?? ()
#4  0x00002aae6d9420a0 in ?? ()
#5  0x00002aacc94ff700 in ?? ()
#6  0x0000000000486312 in ?? ()
#7  0x00002aae2b8054e0 in ?? ()
#8  0x00002aacc94ff700 in ?? ()
#9  0x00002aacc94ff440 in ?? ()
#10 0x00002aae6d9420a0 in ?? ()
#11 0x0000000000000000 in ?? ()

これにはどのような理由が考えられますか? スタックが壊れているためですか?

4

1 に答える 1

2

最も可能性の高いオプションは、何かがコールスタックを破壊したことです。これは、デバッガーがガベージを表示している理由とアプリケーションがクラッシュした理由の両方を説明できます。valgrindでコードを実行してみることをお勧めします。

于 2012-08-01T07:59:02.220 に答える