あるスレッドが別のスレッドのスタックのメモリを上書きすることは可能ですか? したがって、たとえば、返信アドレスが破損する可能性があります。
可能であれば、そのような問題を検出するのに役立つデバッグ ツールやその他の方法はありますか?
Linux x86 システムで pthread を使用する C/C++ アプリケーションについて話しています。
あるスレッドが別のスレッドのスタックのメモリを上書きすることは可能ですか? したがって、たとえば、返信アドレスが破損する可能性があります。
可能であれば、そのような問題を検出するのに役立つデバッグ ツールやその他の方法はありますか?
Linux x86 システムで pthread を使用する C/C++ アプリケーションについて話しています。
独自のメモリ マネージャーを使用してsbrk
システム コールを削減している場合、valgrind は ABW を検出しない場合があります。valgrindmalloc
が libc をオーバーライドするためです。その場合は、プログラムを再リンク (またはコンパイル) してmalloc
、独自のメモリ割り当て関数の代わりに使用する必要があります。
無料ツールである valgrind の他に、商用ツールを使用しても構わない場合は、purifyが代替手段になる可能性があります。
2 つのツールは、使用方法が異なります。purify では、プログラムを purify が提供するライブラリと再リンクする必要があります。valgrind を使用すると、valgrind を介してプログラムを実行するだけで、再リンクは必要ありません。
GCC のマッドフラップライブラリ/インストルメンテーションを使用できます。