Fehlerüberprüfung 0x4000008A: THREAD_TERMINATE_HELD_MUTEX
Die THREAD_TERMINATE_HELD_MUTEX-Fehlerüberprüfung hat den Wert 0x4000008A. Dies gibt an, dass ein Treiber einen Mutex für einen Thread erworben hat, der beendet wurde, bevor der Mutex freigegeben werden konnte. Dies kann dadurch verursacht werden, dass ein Treiber in den Benutzermodus zurückkehrt, ohne einen Mutex freizugeben, oder ein Treiber, der einen Mutex erwirbt und dann eine Ausnahme verursacht, die dazu führt, dass der Thread, in dem er ausgeführt wird, beendet wird.
Wichtig
Dieser Artikel richtet sich an Programmierer. Wenn Sie ein Kunde sind, der während der Verwendung Ihres Computers einen Bluescreen-Fehlercode erhalten hat, finden Sie weitere Informationen unter Behandeln von Bluescreenfehlern.
THREAD_TERMINATE_HELD_MUTEX Parameter
Parameter | Beschreibung |
---|---|
1 | Die Adresse der KTHREAD, die den KMUTEX besitzt. |
2 | Die Adresse des KMUTEX, das sich im Besitz befindet. |
3 | Reserviert |
4 | Reserviert |
Ursache
Die Debugerweiterung !analyze zeigt Informationen zur Fehlerüberprüfung an und kann hilfreich sein, um die Grundursache zu ermitteln.
Um dies zu untersuchen, sehen Sie sich den Aufrufstapel an. Wenn auf dem Stapel ein Treiber vorhanden ist, der direkt von Systemausnahmebehandlungsroutinen und anschließenden Threadabbruchroutinen gefolgt wird, ist dieser Treiber schuld und muss behoben werden, damit er keine nicht behandelte Ausnahme verursacht, während ein Kernelmutex hält. Wenn der Stapel nur den normalen Threadabschlusscode anzeigt und kein Treiber beteiligt ist, führen Sie !pool aus, oder verwenden Sie ln (List Nearest Symbols) für die Adresse des Mutex (Parameter 2), und überprüfen Sie, ob Sie ermitteln können, wer die Datei besitzt. Dieser Fehler wird sich mit ziemlicher Sicherheit im Code des Besitzers dieses Mutexs befindet.