ブルースクリーンエラーのチェック|パソコントラブル出張修理
TOP > 技術情報 > ブルースクリーン > 0x0000000F SPIN_LOCK_ALREADY_OWNED
STOP:0x0000000F SPIN_LOCK_ALREADY_OWNEDエラーの概要です。
これは、スピンロックが既に獲得されているのに、スピンロックの要求が開始されたことを示しています。
MAXIMUM_WAIT_OBJECTS_EXCEEDEDパラメータ
ありません
原因
通常このエラーは、スピンロックの再帰的な要求によって引き起こされます。
スピンロックはスレッドによって獲得された場合には、次にその同じスレッドでもスピンを取得しようとする関数を呼び出します。
(スピンロックの再帰的な要求に似たものが開始された場合にも発生することがあります。)
そうすると回復不能なデッドロックが発生するため、スピンロックを取得する2番目の試みは、この場合はブロックされません。
コールが複数のプロセッサ上で行われている場合、他のプロセッサがロックを解放するまでには、1プロセッサはブロックされます。
また、このエラーは、すべてのスレッドとすべてのスピンロックがIRQLを割り当てられている場合、明示的な再帰せずに発生する可能性があります。
スピンロックIRQLsはいつもDPCレベルに等しいですが、これはスレッドには当てはまりません。
しかし、スピンロックを保持しているスレッドは、スピンロックのそれ以上のIRQLを維持する必要があります。
それが保持しているスピンロックのIRQLレベルより下のスレッドIRQLを小さくすると、別のスレッドがプロセッサ上でスケジュールすることができます。
この新しいスレッドは、同じスピンロックを取得しようとする可能性があります。
※この内容は、Microsoftのバグチェックコードの解説を参考にして要点をまとめたものとなります。
翻訳内容は必ずしも正しいとは限りませんのでご容赦願います。
詳しい内容は
http://msdn.microsoft.com/en-us/library/windows/hardware/ff560412(v=vs.85).aspxをご覧下さい。