0xF de vérification des bogues : SPIN_LOCK_ALREADY_OWNED

Le case activée de bogue SPIN_LOCK_ALREADY_OWNED a une valeur de 0x0000000F. Cela indique qu’une demande de verrouillage de rotation a été lancée lorsque le verrou de rotation était déjà détenu.

Important

Cet article s’adresse aux programmeurs. Si vous êtes un client qui a reçu un code d’erreur d’écran bleu lors de l’utilisation de votre ordinateur, consultez Résoudre les erreurs d’écran bleu.

paramètres SPIN_LOCK_ALREADY_OWNED

None

Cause

En règle générale, cette erreur est provoquée par une demande récursive pour un verrou de rotation. Cela peut également se produire si quelque chose de similaire à une demande récursive pour un verrou de rotation a été lancé, par exemple, lorsqu’un verrou de rotation a été acquis par un thread, puis que ce même thread appelle une fonction, qui tente également d’acquérir un verrou de rotation. La deuxième tentative d’acquisition d’un verrou de rotation n’est pas bloquée dans ce cas, car cela entraînerait un blocage irrécupérable. Si les appels sont effectués sur plusieurs processeurs, un processeur est bloqué jusqu’à ce que l’autre processeur libère le verrou.

Cette erreur peut également se produire, sans récursivité explicite, lorsque tous les threads et tous les verrous de rotation se voient attribuer un IRQL. Les IRQL de verrouillage de rotation sont toujours supérieures ou égales au niveau DPC, mais cela n’est pas vrai pour les threads. Toutefois, un thread qui contient un verrou de rotation doit conserver un IRQL supérieur ou égal à celui du verrou de rotation. La diminution de l’IRQL du thread sous le niveau IRQL du verrou de rotation qu’il contient permet de planifier un autre thread sur le processeur. Ce nouveau thread pourrait alors tenter d’acquérir le même verrou de rotation.

Résolution

Assurez-vous que vous n’êtes pas en cours d’acquisition récursive du verrou. Et, pour les threads qui contiennent un verrou de rotation, assurez-vous que vous ne réduisez pas l’IRQL du thread à un niveau inférieur à l’IRQL du verrou de rotation qu’il contient.