私は、いくつかのスレッド(実際には5つのスレッド)がハングするという特異な状況があります。その理由は、セマフォを待っていて、それをつかむことができないからです。 ipcs -pは、そのセマフォを持つタスクを表示しません。 ipcs -s -iは5のカウントを示します。セマフォーがロックしていない理由を見つける方法
したがって、これら5つのスレッドでセマフォーロックが発生していない理由を知るにはどうすればよいですか?スレッドがこのセマフォを保持しているかどうか
(コールスタックを分析するには、私はすべてのタスクがセマフォを持つ参照couldntの。)
は助けに感謝!
セマフォ関連のシステムコールごとにエラーをチェックしていますか? (semop、semgetなど)IIRC、EINTR errnoおよびそれに関連するシグナルを正しく処理する必要があります。デッドロックすることもできます。 Informix + Tuxedoを使用して、今年の初めに頻繁に出現していました。 – JimR
リターンコードを確認しています。しかし、これはレガシーコードであり、可能性のあるバグを確認するためにこのコードを詳しく調べる必要があります – Manoj