0

コア ダンプの問題を分析しています。valgrind を実行してエラー ログを調べましたが、次のメッセージを解釈できません。誰でもいくつかの洞察を提供できますか。gdb も試してみましたが、あまり情報が得られませんでした。他のスレッドを調べたところ、centos の問題である可能性があることがわかりました。CentOS リリース 5.6 (Final) バージョンを使用しています。glibc ファイルは centos 5.6 と互換性がないと聞きましたが、これについてはよくわかりません。いつでもこの問題に直面する人はいますか?

==18035==
==18035== Jump to the invalid address stated on the next line
==18035==    at 0x0: ???
==18035==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==18035==
==18035==
==18035== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==18035==  Bad permissions for mapped region at address 0x0
==18035==    at 0x0: ???
==18035== Invalid free() / delete / delete[]
==18035==    at 0x47D951D: free (vg_replace_malloc.c:325)
==18035==    by 0x3141CD: ??? (in /lib/libc-2.5.so)
==18035==    by 0x313D46: ??? (in /lib/libc-2.5.so)
==18035==    by 0x47CC3B2: _vgnU_freeres (vg_preloaded.c:62)
==18035==  Address 0x198a55e0 is not stack'd, malloc'd or (recently) free'd
==18035==
4

1 に答える 1

1

次の行に記述された無効なアドレスにジャンプします

これは通常、次の 2 つのいずれかを意味します。

  1. 関数ポインターを介して関数を呼び出しており、そのポインターがNULL、または
  2. スタックを破棄したため、リターン アドレスが0s で上書きされました。

ここでは、GDB からのクラッシュ スタック トレースが役立つ場合があります。

これがスタック破損の問題である場合は、AddressSanitizerを使用してみてください(Valgrind とは異なり、スタック オーバーフローの検出に優れています)。

于 2012-07-20T17:36:27.383 に答える