Mavi ekran hataları, bir başka mavi ekran hatalarıyla her zaman ilişkili olmayan hatalardır. Bundan dolayı da tüm öneriler her zaman tam isabet olmaz.
Rich (BB code):
KERNEL_AUTO_BOOST_LOCK_ACQUISITION_WITH_RAISED_IRQL (192)
A lock tracked by AutoBoost was acquired while executing at DISPATCH_LEVEL or
above.
Arguments:
Arg1: ffff9103f1797080, The address of the thread.
Arg2: ffffa58d316013d0, The lock address.
Arg3: 0000000000000002, The IRQL at which the lock was acquired.
Arg4: 0000000000000000, Reserved.
Tıpkı dosyadaki, görseldeki hata gibi. Ayrıca AUTO_BOOST ile ilgili 3 hatadan biri de bu'dur.
AUTO_BOOST dediğimiz şey de
priority inversion sorununu çözmek için tasarlanan bir mekanizmadan ibaret. Priority inversion ise yüksek öncelikli bir thread'in, düşük öncelikli thread tarafından tutulan bir kaynağa ihtiyaç duyması nedeniyle çalışmasının engellendiği bir durumdur. Aslında bir sorundur ve bunun için geliştirilen bir çözüm var. Bu, iki thread birbirinin işleyişini engelleyince de ortaya bir
deadlock çıkıyor. Bu da Windows için normal bir durum değildir.
Konuyla ilgili:
Dosyana dönüp bakınca aslında sorunun sebebini anlayabiliyoruz. Zira Microsoft bunun için bir açıklama yapmış. Hatanın
makalesine bakarsak
The KERNEL_AUTO_BOOST_LOCK_ACQUISITION_WITH_RAISED_IRQL bug check has a value of 0x00000192. This indicates that a lock tracked by AutoBoost was acquired while executing at DISPATCH_LEVEL or above.
Sorunun açıkça, ilgili lock'u edinmeye çalışan
nt!ExAcquirePushLockExclusiveEx işlevinin IRQL = 2 durumunda çağrılmasından dolayı ortaya çıktığını görüyoruz. Bu fonksiyon IRQL = 2 düzeyinde çağrılamaz. Buna sebep olan şey de aslında dosyada mevcut.
Rich (BB code):
0: kd> k
# Child-SP RetAddr Call Site
00 fffff807`60c50948 fffff807`5c059a5b nt!KeBugCheckEx
01 fffff807`60c50950 fffff807`5c0b48aa nt!ExAcquirePushLockExclusiveEx+0x14b // ÇÖKME
02 fffff807`60c50990 fffff807`5c0b3ab4 nt!RtlpHpAcquireLockExclusive+0x2a // Kilit edinimi
03 fffff807`60c509c0 fffff807`5c050952 nt!RtlpHpLfhSubsegmentFreeBlock+0x244
04 fffff807`60c50a70 fffff807`5c7b80b9 nt!ExFreeHeapPool+0x362
05 fffff807`60c50b50 fffff807`64bf1562 nt!ExFreePool+0x9 // Yığından serbest bırakılan bellek
06 fffff807`60c50b80 00000000`00000080 VKbms+0x1562 // RAZER HID SÜRÜCÜSÜ
07 fffff807`60c50b88 ffff9103`e3376e60 0x80
08 fffff807`60c50b90 ffff9103`e48f93b8 0xffff9103`e3376e60
09 fffff807`60c50b98 00000000`00000008 0xffff9103`e48f93b8
0a fffff807`60c50ba0 fffff807`60c50bc8 0x8
0b fffff807`60c50ba8 fffff807`5c01623d 0xfffff807`60c50bc8
0c fffff807`60c50bb0 00006efc`1cc89198 nt!KiReadyThread+0x4d
0d fffff807`60c50be0 ffff9103`e48f92f0 0x00006efc`1cc89198
0e fffff807`60c50be8 fffff807`5ebd04d9 0xffff9103`e48f92f0
0f fffff807`60c50bf0 fffff807`5c0147d2 Wdf01000!FxTimer::_FxTimerDpcThunk+0x1b6a9
10 fffff807`60c50c30 fffff807`5c01384d nt!KiProcessExpiredTimerList+0x172
11 fffff807`60c50d20 fffff807`5c206fd5 nt!KiRetireDpcList+0x5dd
12 fffff807`60c50fb0 fffff807`5c206dc0 nt!KxRetireDpcList+0x5
13 ffffb808`5385f220 fffff807`5c206505 nt!KiDispatchInterruptContinue // IRQL = 2 durumuna geçiş
14 ffffb808`5385f250 fffff807`5c201001 nt!KiDpcInterruptBypass+0x25
15 ffffb808`5385f260 fffff807`5c057d13 nt!KiInterruptDispatchNoLockNoEtw+0xb1
16 ffffb808`5385f3f0 fffff807`5c4e3e84 nt!KeAbPostRelease+0x113 // Serbest bırakılan bir kilidi izleme mekanizması - bir kilidin serbest bırakılması?
17 ffffb808`5385f450 fffff807`5c42b9ee nt!PspChangeJobMemoryUsageByProcess+0x274 // İlgili process'e bağlı bellek kullanımı?
18 ffffb808`5385f4e0 fffff807`5c044dde nt!MiChargeFullProcessCommitment+0x7e
19 ffffb808`5385f510 fffff807`5c42b19a nt!MiCommitExistingVad+0x34e // Önceden ayrılmış VAD'lerin tahsisi
1a ffffb808`5385f660 fffff807`5c42d18b nt!MiAllocateVirtualMemory+0x2aa // MM tarafından sanal belleklerin tahsis edilmesi
1b ffffb808`5385f7e0 fffff807`5c212705 nt!NtAllocateVirtualMemory+0x1ab // NT tarafından sanal belleklerin tahsisinin işlenmesi
1c ffffb808`5385f990 00007ffd`b80cd7f4 nt!KiSystemServiceCopyEnd+0x25 // NT'e geçiş
1d 0000009b`204e77c8 00000000`00000000 0x00007ffd`b80cd7f4
Durum anlattığım gibi ama çok ihtimal var. Dosya yetersiz bir yere kadar ve tam olarak anlamamız da imkansız. Ya gerçekten Windows'un genel geçer bilgisinde bahsedildiği gibi nt!ExAcquirePushLockExclusiveEx işlevi yanlış bir istek kesme seviyesinde çağrılıyor ve sistem çöküyor ki bu yığınlar bir tık bunu doğrulamak için fazlalar.
Ya sistem tahsis ettiği bellek bloklarından birine erişim sağlayıp kilit ediniyor. Bu serbest bırakılan kilidi tekrar edinmek ya da free bir belleğe yazmak gibi bir hatayı tetikliyor.
Ya da o an çalışan thread'in bekleyebileceği kilit sayısını çoktan tüketmiş olmasından kaynaklanıyor ki çağrılarda bunu sıkça görüyoruz. (Edin - Bırak)
AutoBoostEntriesExhausted alanı bu durumda true olarak ayarlandığı için anlamamız kolay oluyor aslında. Bu da ne kadar doğru... Açıkçası bir kesinlik sunmuyorum.
Rich (BB code):
0: kd> dt _KTHREAD -y AutoBoostEntriesExhausted ffff9103f1797080
nt!_KTHREAD
+0x078 AutoBoostEntriesExhausted : 0y1
Sonuç olarak, bu soruna sebep olan şey HID razer sürücüsü. Muhtemelen Mouse ile ilgili bir meret.
Rich (BB code):
FAILURE_BUCKET_ID: 0x192_VKbms!unknown_function
Rich (BB code):
0: kd> lmvm VKbms
Browse full module list
start end module name
fffff807`64bf0000 fffff807`64bfb000 VKbms T (no symbols)
Loaded symbol image file: VKbms.sys
Image path: VKbms.sys
Image name: VKbms.sys
Browse all global symbols functions data
Timestamp: Fri Jul 11 06:42:22 2014 (53BF5D1E)
CheckSum: 000054D2
ImageSize: 0000B000
Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4
Information from resource tables:
Sürücüsü 11 yıllık, muhtemelen artık desteklenmeyen bir sürücüden ibaret.