TLDR: 破棄された/初期化されていないミューテックスをロックしていないことを確認してください。
OPには彼の答えがありますが、他の誰かが私と同じ問題を抱えている場合に備えて、私の問題を共有すると思いました.
アサーションが__pthread_mutex_lockロック解除ではなく、含まれていることに注意してください。これは、この問題を抱えている他のほとんどの人が、ミューテックスをロックしたスレッドとは別のスレッドでミューテックスのロックを解除していないことを示唆しています。破棄されたミューテックスをロックしているだけです。
私にとってはFoo、静的コールバック関数を他のクラス(と呼びましょう)に登録したクラス(と呼びましょうBar)がありました。コールバックに への参照が渡されてFooおり、 のメンバーであるミューテックスを時折ロック/ロック解除していましたFoo。
この問題は、インスタンスがまだコールバックを使用しているFoo間にインスタンスが破棄された後に発生しました。Barコールバックには存在しないオブジェクトへの参照が渡されたため、ガベージ メモリで __pthread_mutex_lock を呼び出していました。
注意してください、私は C++11 のstd::mutexとを使用しstd::lock_guard<std::mutex>ていましたが、Linux を使用していたため、問題はまったく同じでした。