Rich (BB code):
IRQL_NOT_LESS_OR_EQUAL (a)
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If a kernel debugger is available get the stack backtrace.
Arguments:
Arg1: 0000000000000020, memory referenced
Arg2: 0000000000000002, IRQL
Arg3: 0000000000000001, bitfield :
bit 0 : value 0 = read operation, 1 = write operation
bit 3 : value 0 = not an execute operation, 1 = execute operation (only on chips which support this level of status)
Arg4: fffff80271e7416e, address which referenced memory
Hata 0XA; Tipik olarak kötü sürücü paylaşılan bir veri yapısını bozup sonlandırır ve ancak başka bir sürücü ya da işlev bu veri yapısına erişmeye çalıştığında mavi ekran oluşur. Ya da bu veri yapısı çok uzun zaman önce kötü bir donanımdan dolayı zaten bozulmuştur. Pekala,
Rich (BB code):
6: kd> KnL
# Child-SP RetAddr Call Site
00 ffffb885`ebcaf788 fffff802`72012fa9 nt!KeBugCheckEx
01 ffffb885`ebcaf790 fffff802`7200e978 nt!KiBugCheckDispatch+0x69
02 ffffb885`ebcaf8d0 fffff802`71e7416e nt!KiPageFault+0x478
03 ffffb885`ebcafa60 fffff802`71e7413b nt!KxWaitForLockOwnerShip+0xe << Çökme, Muhtemelen bir spinlock senkronizasyon mekanizması, bir nedenden dolayı burada başarısız olmuş durumda
04 ffffb885`ebcafa90 fffff802`71fb7106 nt!KeAcquireInStackQueuedSpinLock+0x7b << Dolaylı olarak sistemi IRQL = 2 seviyesine yükseltir
05 ffffb885`ebcafac0 fffff802`71f5a2b5 nt!ExpWorkerFactoryManagerThread+0x66
06 ffffb885`ebcafb10 fffff802`72007728 nt!PspSystemThreadStartup+0x55
07 ffffb885`ebcafb60 00000000`00000000 nt!KiStartSystemThread+0x28
“
KeAcquireInStackQueuedSpinLock” fonksiyonunun IRQL'i yükseltmesinin ve ardından ‘KxWaitForLockOwnerShip' içinde kilit nesnesini beklediğini varsayıyorum. Döküm dosyası üzerinde “running -it” komutunu çalıştıramadım çünkü dosya o kadar küçük ki bu tip detaylar kaydedilmiyor. (Diğer çekirdekleri kontrol etmek için.)
Rich (BB code):
6: kd> !running -it
GetUlongFromAddress: unable to read from fffff802728fc404
Couldn't find processor info
Sorun ise IRQL'i DISPATCH_LEVEL'e yükseltmenin (dahili olarak KeAcquireInStackQueuedSpinLock işlevi tarafından) ve özel kilit için uzun süre beklemenin bir zaman aşımına neden olmasından ortaya çıkıyor.
Yani aslında sorunun tam olarak konudaki hatayla ilişiğini ortaya çıkarmak çok da mümkün değil. Dosyanın sunduğu bilgi de kısıtlı. Burada spin Lock'u edinen bir sürücü de olabilir ya da sistemin uzun süre takılmasından dolayı bu hatayı yaratması da olabilir ki bu daha çok işlemciye kayıyor.
Rich (BB code):
6: kd> u fffff802`71e7416e
nt!KxWaitForLockOwnerShip+0xe:
fffff802`71e7416e 48890a mov qword ptr [rdx],rcx
fffff802`71e74171 c744243000000000 mov dword ptr [rsp+30h],0
fffff802`71e74179 0f1f8000000000 nop dword ptr [rax]
fffff802`71e74180 488d4c2430 lea rcx,[rsp+30h]
fffff802`71e74185 e8f675faff call nt!KeYieldProcessorEx < Spin Loop hint?
fffff802`71e7418a 488b4308 mov rax,qword ptr [rbx+8]
fffff802`71e7418e a801 test al,1
fffff802`71e74190 75ee jne nt!KxWaitForLockOwnerShip+0x20 (fffff802`71e74180)
Dikkatimi bu arkadaş çekti ve ilişiği de var. Şöyle ki; KeYieldProcessorEx() ile sadece KxWaitForLockOwnerShip ile edinilen kilit süresinin optimize ediyor. Optimizasyon mekanizmaları. Uzun süre beklemek için tasarlanan kodlar olmadıklarından dolayı uzun süreli zamanlar için uygun değiller. Muhtemelen burada karşımıza sadece
PAUSE komutunu çalıştırdığı için çıkıyor. Yani sistemin takılması (Konudan örnekle, donması.) < İşlemci ile alakalı olabilir. (Tahmin)
Rich (BB code):
0xffffb885ebcaf8c8 : 0xfffff8027200e978 : nt!KiPageFault+0x478 << Çökme
0xffffb885ebcaf938 : 0xfffff80271e54dff : nt!KiCommitThreadWait+0x14f << IRP rutinin tamamlanmasını bekle
0xffffb885ebcaf9b8 : 0xfffff802728166a0 : nt!ExpWorkerFactoryManagerQueue
0xffffb885ebcaf9d8 : 0xfffff80271e2c4c3 : nt!KeRemoveQueueEx+0x263
0xffffb885ebcafa18 : 0xfffff80271e2c539 : nt!KeRemoveQueueEx+0x2d9 < Birden fazla girdi?
0xffffb885ebcafa38 : 0xfffff80271e7416e : nt!KxWaitForLockOwnerShip+0xe
0xffffb885ebcafa78 : 0xfffff80271f2a257 : nt!KeRemoveQueue+0x27 < Girdiyi sıradan kaldır ya da bekle?
0xffffb885ebcafa88 : 0xfffff80271e7413b : nt!KeAcquireInStackQueuedSpinLock+0x7b
0xffffb885ebcafab8 : 0xfffff80271fb7106 : nt!ExpWorkerFactoryManagerThread+0x66
0xffffb885ebcafb08 : 0xfffff80271f5a2b5 : nt!PspSystemThreadStartup+0x55
0xffffb885ebcafb18 : 0xfffff80271fb70a0 : nt!ExpWorkerFactoryManagerThread
0xffffb885ebcafb58 : 0xfffff80272007728 : nt!KiStartSystemThread+0x28
0xffffb885ebcafb70 : 0xfffff80271f5a260 : nt!PspSystemThreadStartup
Açıkçası buna bir sürücü de sebep olabilir ama konu içeriğine bakılınca boot sırasında olmadığını normal açılışta direkt takıldığını görüyorum. Dosyayla alakalı olarak timeout diyebilirim ancak. Bu dosya bu kadar. MEMORY.DMP varsa paylaşabilirsin çünkü daha fazla dosya daha fazla bilgi demek... Yoksa da RAM'lerini tek tek çıkarıp kontrol etmeyi deneyebilirsin, bana kalsa işlemci sorunu derim ama bunun bir garantisini bu dosyadan sunamam ve işlemciyi kontrol etmek o kadar da basit olmayacak. Bu yüzden RAM'ler (Varsa 2 tane) ile tek tek deneme yapmak donanımsal olarak hem en basit hem de en mantıklı şeylerden biri olacaktır.