C++ やマルチスレッド コードの経験者がミューテックスの問題に光を当てることができれば幸いです。Red Hat Linux 5.4 で動作しています。私が書いていないレガシーコードをデバッグしています。1 秒あたりのコール数が非常に多いと想定されており、応答時間は 3 ~ 5 ミリ秒です。メイン アプリケーションで約 400 のスレッドを実行しています。
このアプリで気に入らない点の 1 つは、あらゆる場所でスマート ポインターが使用されていることです (SPtr が範囲外になると常にミューテックス呼び出しが行われます)。これを書いた人は SPtrs にはまっているようです。多くの関数は SPtr を引数として取ります。
アプリケーションは数時間正常に実行できますが、ロック時に突然ミューテックス EINVAL を取得します (リターン コード 22)。コア ダンプを確認したところ、異なるスタック トレースが表示され、原因となった場所は 1 つではありませんでした。
これをデバッグするためにどのツールをお勧めしますか? これは、メモリまたはスタックの破損 (ミューテックスとは関係のないもの) が原因で発生する可能性がありますか? 御時間ありがとうございます。