KERNEL_THREAD_PRIORITY_FLOOR_VIOLATION (157) mavi ekran hatası

Celal Tüzün

Üyecik
Katılım
23 Haziran 2025
Mesajlar
1
Beğeniler
0
Son düzenleyen: Moderatör:
Aldığın hatalardan biriyle alakalı gerçekten söylenebilecek şeyler çok kısıtlı. Neyse ki 1 tanesinde hatayı kaydetmiş diyelim.

Rich (BB code):
KERNEL_THREAD_PRIORITY_FLOOR_VIOLATION (157)
An illegal operation was attempted on the priority floor of a particular
thread.
Arguments:
Arg1: ffffe38604631040, The address of the thread
Arg2: 00000000000a0020, The target priority value
Arg3: 0000000000000002, The priority counter for the target priority underflowed
Arg4: 0000000000000000, Reserved

Şimdi, Bu hata ile ilgili olarak Windows 10/11'in kendi uzak bağlantı özelliklerini saymazsak genel olarak sunucu tabanlı OS'larda oluştuğunu belirtmem gerekiyor. Sunucu bilgisayarında mı bu hatayı alıyorsunuz acaba?

Rich (BB code):
Windows 10 Kernel Version 26100 MP (12 procs) Free x64
Product: WinNt, suite: TerminalServer SingleUserTS
Kernel base = 0xfffff804`f0800000 PsLoadedModuleList = 0xfffff804`f16f4aa0
Debug session time: Mon Jun 23 15:57:37.317 2025 (UTC + 3:00)
System Uptime: 0 days 0:04:10.142

Sistem TS olarak görünüyor. Kullanıcı istemi olarak değil.

Bu hata hakkında da işlem zamanlayıcının belirli bir iş parçacığının öncelik düzeyini düzgün bir şekilde işlemediğiyle ilgili olması dışında özellikle söylenecek çok bir şey de yok.

Bu hatayı da ancak üç farklı durum tetikleyebilir: priority floor sayısı ya alt tabandan düşük bir değere düşmüştür, ya üst tabandan yüksek bir değere çıkmıştır ya da bu sayı geçersizdir.


Rich (BB code):
0: kd> dt _KTHREAD -y Priority ffffe38604631040
nt!_KTHREAD
   +0x0c3 Priority : 12 ''
   +0x206 PriorityDecrement : 0n0
   +0x338 PriorityFloorCounts : [32]  ""
   +0x358 PriorityFloorSummary : 0

Buradaki her şeyin tam olarak neye karşılık geldiği hakkında bir bilgim yok ancak ilgili priority dizisinin 0 ile 31 arasında değişen kullanılabilir öncelik düzeylerinin sayısı ile tam olarak aynı uzunlukta olduğu dikkatimi çekiyor.

Rich (BB code):
0: kd> k
 # Child-SP          RetAddr               Call Site
00 fffff804`833ff5a8 fffff804`f0b3fcc0     nt!KeBugCheckEx
01 fffff804`833ff5b0 fffff804`f0b3ed14     nt!KiAdjustRealtimePriorityFloor+0x4c // çökme
02 fffff804`833ff5f0 fffff804`f0a2e153     nt!KiWakePriQueueWaiter+0x134
03 fffff804`833ff650 fffff804`96b1eb4d     nt!ExQueueWorkItem+0x2d3 // Zamanlayıcı bir iş parçacığı kuyruğu ekliyor
04 fffff804`833ff6d0 fffff804`f0b96fa2     dxgmms2!VidMmRangeCurationDpc+0x2d // DirectX birimine ait bellek aralığı düzenleme zamanlayıcısı çağrılıyor
05 fffff804`833ff700 fffff804`f0b97885     nt!KiProcessExpiredTimerList+0x502
06 fffff804`833ff830 fffff804`f0ae6a86     nt!KiTimerExpiration+0x2b5
07 fffff804`833ff970 fffff804`f0ea563e     nt!KiRetireDpcList+0xc46 // DPC kuyruğunu başlatır, işlemciyi uyandırır
08 fffff804`833ffc00 00000000`00000000     nt!KiIdleLoop+0x9e // Sistem boşta, işlemci boşta

Çağrı yığınını incelersek, DirectX sürücüsünün bir DPC zamanlayıcı işleminde ExQueueWorkItem ile bir işi kuyruklamak isterken bu iş kuyruktaki başka bir thread’i uyandırmak zorunda kaldığını görüyoruz (Ne olduğu bu dosyada belli değil.) Uyandırılacak thread’in öncelik zeminini güncellemesi gerekirken muhtemelen çökme sırasında da gördüğümüz gibi priority değerinde yukarıda bahsettiğim 3 ihtimalden biri ortaya çıkıyor ve sistem mavi ekranla duruyor. Sorun ekran kartı alt biriminde ortaya çıkıyor.

Bu noktada çalışan işlemin değerlerini de kontrol edebiliriz ayrıca.

Rich (BB code):
0: kd> dt _EPROCESS -y Priority ffffe385f04b0040
nt!_EPROCESS
   +0x347 PriorityClass : 0x2 ''

Gördüğün gibi, işlem NORMAL_PRIORITY_CLASS ayarına sahip ve iş parçacığı da 12 öncelik seviyesine sahip. bu nedenle temel öncelik seviyesinin 12 olduğu sonucuna varabiliyoruz. Yani bizim bu noktada düşebileceğimiz tek nokta 12. Altı overflow'a girecektir.

Rich (BB code):
0: kd> dt _KTHREAD -y Base ffffe38604631040
nt!_KTHREAD
   +0x233 BasePriority : 12 ''

Bunu aynı şekilde Microsoft'un ilgili makalesinde de görebiliyoruz...


Şöyle bir ihtimal düşünübiliyorum sadece toplamdan çıkardığım sonuç ile:

Ekran kartı sürücüsünde bu ilerleyiş saçma bir programatik ile SetThreadPriority()'i çağırıyor ve çok yüksek bir değerden iş parçacığına giriyor. Zaten halihazırda sistem boştayken çalışan DPC işlemleri için bu kadar büyük bir öncelik durumuna ihtiyaç duyulduğunu sanmıyorum. Bu dosya sistem boştayken oluyor ve yapılan işlemde belli bellek aralıklarını düzenleme işlemi.

Sonrasında kuyruğa eklediği WorkItem ile çalışan İP başka bir İP'i uyandırıyor. Uyandırılan İP'in önceliği bu kadar yüksek olmadığı için çökme sırasında muhtemelen bu öncelik değeri 12'den daha düşük bir değere indirilmeye çalışılıyor ve sistem çöküyor. Bunda ben sürücü sorunu olduğunu varsayıyorum....

Rich (BB code):
0: kd> lmDvmnvlddmkm
Browse full module list
start             end                 module name
fffff804`8f9e0000 fffff804`96651000   nvlddmkm   (deferred)            
    Image path: nvlddmkm.sys
    Image name: nvlddmkm.sys
    Browse all global symbols  functions  data
    Timestamp:        Thu Jun 12 03:49:31 2025 (684A241B)
    CheckSum:         06A840AA
    ImageSize:        06C71000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
    Information from resource tables:

Ekran kartı sürücün güncel gözüküyor. Bu hata ne süredir yaşanıyor?


Bir diğer hatan da

Rich (BB code):
MEMORY_MANAGEMENT (1a)
    # Any other values for parameter 1 must be individually examined.
Arguments:
Arg1: 0000000000061941, // Çökmüş PTE tablosu.
Arg2: 000002882e1f8000
Arg3: 000000000000000d
Arg4: ffffe1028cebfaa0 // TRAP.

Hatası. Bu hata ile ilgili söyleyebileceğim çok bir şey yok çünkü tüm dosya bozuk halde. Bunu bir donanım hatasına yorabilirim ama.

Rich (BB code):
0: kd> .trap ffffe1028cebfaa0
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=00000288df551000 rbx=0000000000000000 rcx=0000000000018000
rdx=000002882e1f0000 rsi=0000000000000000 rdi=0000000000000000
rip=00007ff9c4e112db rsp=000000c0ab61f7d8 rbp=0000000000000000
 r8=0000000000020000  r9=000002882e210000 r10=00007ff9c4e10000
r11=ffffffffffffffff r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0         nv up ei pl nz na pe nc
0033:00007ff9`c4e112db ??              ???

İlgili hata sabit olarak aşağıdaki gibidir...

Rich (BB code):
FAILURE_BUCKET_ID:  0x1a_61941_PAGE_TABLE_RESERVED_BITS_SET_IMAGE_hardware_ram

Bu, sistemin RAM'de geçersiz bir sayfa tablosu girişi tespit ettiği anlamına geliyor. Buna hem gerçekten hardware_ram ile belirtildiği gibi RAM, ya da gerçekten bu yapıyı bozabilecek bir sürücü de sebep olabiliyor.

Öncelik olarak sürücü doğrulayıcı çalıştırıp sistemi kontrol etmeni istiyorum. Eğer direkt olarak hata vermezse 48 saat arkada açık halde kullanın bilgisayarı.


Bu süre zarfında hata yaşarsanız ve doğrulayıcı hatalarından bağımsız olursa RAM'leri tek tek kullanmanı isteyeceğim.
 
İfadeler: 99
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…