Kod:
DPC_WATCHDOG_VIOLATION (133)
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
or above.
Arguments:
Arg1: 0000000000000000, A single DPC or ISR exceeded its time allotment. The offending
component can usually be identified with a stack trace.
Arg2: 0000000000000501, The DPC time count (in ticks).
Arg3: 0000000000000500, The DPC time allotment (in ticks).
Arg4: fffff805358fb320, cast to nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, which contains
additional information regarding this single DPC timeout
Sistem burada, yürütmeyi bitirmesi için ayrılan süreyi aşan bir DPC ile karşılaştığımızı belirtiyor. Sorun şu ki, bu süreyi aştı ve ilk argümanda da belirtildiği gibi DPC'lerin/nin yürütülmesi çok uzun sürdüğünden dolayı sistemi geciktirdi, bu da sistem gecikmesine, yani yavaş bir sisteme ve hatta sesi kesilen bir sistemin oluşmasına neden oldu. Kısaca Bu DPC, sınır 0x500 iken 0x50
1 tik boyunca çalıştı.
Çağrı yığınına bakalım:
Kod:
2: kd> K
# Child-SP RetAddr Call Site
00 ffffe680`4ae7fc88 fffff806`104411c6 nt!KeBugCheckEx
01 ffffe680`4ae7fc90 fffff806`1026e48d nt!KeAccumulateTicks+0x1d5f56
02 ffffe680`4ae7fcf0 fffff806`102669c1 nt!KiUpdateRunTime+0x5d
03 ffffe680`4ae7fd40 fffff806`10268883 nt!KiUpdateTime+0x4a1
04 ffffe680`4ae7fe80 fffff806`10265a92 nt!KeClockInterruptNotify+0x2e3
05 ffffe680`4ae7ff30 fffff806`102d3735 nt!HalpTimerClockInterrupt+0xe2
06 ffffe680`4ae7ff60 fffff806`104002da nt!KiCallInterruptServiceRoutine+0xa5
07 ffffe680`4ae7ffb0 fffff806`10400b07 nt!KiInterruptSubDispatchNoLockNoEtw+0xfa
08 ffffba02`78637410 fffff806`102d3ddc nt!KiInterruptDispatchNoLockNoEtw+0x37
09 ffffba02`786375a0 fffff806`10258048 nt!KxWaitForSpinLockAndAcquire+0x2c
0a ffffba02`786375d0 fffff806`1cabb59d nt!KeAcquireSpinLockRaiseToDpc+0x88
0b ffffba02`78637600 ffffbe07`31000000 rtwlane+0x48b59d
0c ffffba02`78637608 00000000`00000000 0xffffbe07`31000000
Rtwlane, Yani internet sürücün Rutin çağrıldığında geçerli IRQL değerini döndüren nt!KeAcquireSpinLockRaiseToDpc'yi çağırıyor. Ardından
nt!KxWaitForSpinLockAndAcquire+0x2c işlevi ile de IRQL DISPATCH LEVEL veya daha yüksek bir seviyede spinlock ediniyor.
Bundan sonra sistem çökme yoluna gidiyor çünkü bir DPC uzun süre loopta kalınca sistemin bunu fark etmesi geç oluyor, bunu fark ettikten sonra da yığından görebildiğin gibi sistem saatini düzenliyor ve DPC işleminin belirtilen süreyi aştığını fark edip çöküyor. Nasıl çöktüğünü de şurdan anlıyoruz:
Kod:
8: kd> u fffff805`34ed3df4 fffff805`3505b714
nt!KxWaitForSpinLockAndAcquire+0x44:
fffff805`34ed3df4 f0480fba2f00 lock bts qword ptr [rdi],0
fffff805`34ed3dfa 7213 jb nt!KxWaitForSpinLockAndAcquire+0x5f (fffff805`34ed3e0f)
fffff805`34ed3dfc 488b742438 mov rsi,qword ptr [rsp+38h]
fffff805`34ed3e01 8bc3 mov eax,ebx
fffff805`34ed3e03 488b5c2430 mov rbx,qword ptr [rsp+30h]
fffff805`34ed3e08 4883c420 add rsp,20h
fffff805`34ed3e0c 5f pop rdi
fffff805`34ed3e0d c3 ret
fffff805`34ed3e0e cc int 3
fffff805`34ed3e0f 488b8eb8840000 mov rcx,qword ptr [rsi+84B8h]
fffff805`34ed3e16 4885c9 test rcx,rcx
fffff805`34ed3e19 74b5 je nt!KxWaitForSpinLockAndAcquire+0x20 (fffff805`34ed3dd0)
fffff805`34ed3e1b e91b791800 jmp nt!KxWaitForSpinLockAndAcquire+0x18798b (fffff805`3505b73b)
fffff805`34ed3e20 8b05f685a200 mov eax,dword ptr [nt!HvlEnlightenments (fffff805`358fc41c)]
fffff805`34ed3e26 a840 test al,40h
fffff805`34ed3e28 74b0 je nt!KxWaitForSpinLockAndAcquire+0x2a (fffff805`34ed3dda)
fffff805`34ed3e2a e801d50b00 call nt!KiCheckVpBackingLongSpinWaitHypercall (fffff805`34f91330)
fffff805`34ed3e2f 84c0 test al,al
fffff805`34ed3e31 74a7 je nt!KxWaitForSpinLockAndAcquire+0x2a (fffff805`34ed3dda)
fffff805`34ed3e33 8bcb mov ecx,ebx
fffff805`34ed3e35 e816c70b00 call nt!HvlNotifyLongSpinWait (fffff805`34f90550)
fffff805`34ed3e3a eba0 jmp nt!KxWaitForSpinLockAndAcquire+0x2c (fffff805`34ed3ddc)
fffff805`34ed3e3c cc int 3
fffff805`34ed3e3d cc int 3
fffff805`34ed3e3e cc int 3
fffff805`34ed3e3f cc int 3
fffff805`34ed3e40 cc int 3
fffff805`34ed3e41 cc int 3
fffff805`34ed3e42 cc int 3
fffff805`34ed3e43 cc int 3
Sistem, nt!KxWaitForSpinLockAndAcquire+0x5f işlevinden sonra bir loop'a düşüyor. Sürekli IRQL 2 düzeyinde bu işlevi loopta döndürüyor. Peki bu neden oluyor?
Kod:
FAILURE_BUCKET_ID: 0x133_DPC_rtwlane!unknown_function
Burda, ağ sürücünün çağırdıüı bir işlevin mevcut olmadığını görebiliyoruz. Bu dolaylı olarak sistemi loop'a düşmesinin sebebi olabilir. İlk etapta
Realtek PCI-E Wireless LAN NIC NDIS sürücünü güncellemelisin.
2: kd> lmvm rtwlane
Image path: rtwlane.sys
Image name: rtwlane.sys
Browse all global symbols functions data
Timestamp: Fri Aug 20 07:14:30 2021 (611F2C26)
Hata devam ettiği takdirde, güncel MEMORY.DMP dosyasını paylaşın.