Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Mienaki

Uzman
Katılım
26 Eylül 2024
Mesajlar
49
Beğeniler
6

Merhaba, iyi geceler. Tekrardan rahatsız ettim kusura bakmayınız.. Ayın 27'sinde hata almıştım en son 13 gün önce ve şu an tekrarladı. Minidump dosyasını paylaşmak istedim. Portların yerini değiştirip kullanıyordum ve hiçbir sorun yoktu ama birden takıldı tekrar "tııır" sesi ve siyah ekran ile reset atmak zorunda kaldım.
 
Son düzenleyen: Moderatör:
Çözüm
Rich (BB code):
KMODE_EXCEPTION_NOT_HANDLED (1e)
This is a very common BugCheck.  Usually the exception address pinpoints
the driver/function that caused the problem.  Always note this address
as well as the link date of the driver/image that contains this address.
Arguments:
Arg1: ffffffff80000003, The exception code that was not handled
Arg2: fffff807dfe79470, The address that the exception occurred at
Arg3: 0000000000000000, Parameter 0 of the exception
Arg4: fffff807dfe79470, Parameter 1 of the exception

Gördüğümüz gibi oldukça genel bir hata kontrolümüz var. Bunlar, kendileri için işleyici yazılmamış ya da yapılandırılmış istisna işleme kullanılarak yakalanamayan istisnaların atılmasından kaynaklanıyor. Örneğin, PageFault, try-catch deyimi ile ele alınamayan bir istisnadır.

İşlenmeyen istisna nedir?

Rich (BB code):
0: kd> !error 80000003
Error code: (HRESULT) 0x80000003 (2147483651) - Bir veya daha fazla bağımsız değişken geçersiz

İstisnaya sebep olan fonksiyon nedir?

Rich (BB code):
0: kd> ln fffff807dfe79470
Browse module
Set bu breakpoint

(fffff807`dfe79470)   nt!DbgBreakPoint   |  (fffff807`dfe79480)   nt!DbgUserBreakPoint
Exact matches:

Microsoft'un bunun hakkındaki belgelemesine bakarsak:

The DbgBreakPoint routine is the kernel-mode equivalent of DebugBreak.

This routine raises an exception that is handled by the kernel debugger if one is installed; otherwise, it is handled by the debug system. If a debugger is not connected to the system, the exception can be handled in the standard way.

In kernel mode, a break exception that is not handled will cause a bug check. You can, however, connect a kernel-mode debugger to a target computer that has stopped responding and has kernel debugging enabled.

Bu neden sistemin mavi ekran verdiğini açıklıyor. Lakin ne yüzünden verdiğini açıklamıyor, Yığıtlara bakarak bunu çözebiliriz;


Rich (BB code):
0: kd> k
 # Child-SP RetAddr Call Site
00 fffff807`71b950c8 fffff807`dff2a112 nt!KeBugCheckEx
01 fffff807`71b950d0 fffff807`e003d172 nt!KiFatalExceptionHandler+0x22
02 fffff807`71b95110 fffff807`dfd52302 nt!RtlpExecuteHandlerForException+0x12
03 fffff807`71b95140 fffff807`dfd53469 nt!RtlDispatchException+0x2d2
04 fffff807`71b958a0 fffff807`e0033d92 nt!KiDispatchException+0xac9
05 fffff807`71b95fb0 fffff807`e0033d60 nt!KxExceptionDispatchOnExceptionStack+0x12
06 fffff807`71b84128 fffff807`e0047c3e nt!KiExceptionDispatchOnExceptionStackContinue
07 fffff807`71b84130 fffff807`e003fe9b nt!KiExceptionDispatch+0x13e
08 fffff807`71b84310 fffff807`dfe79471 nt!KiBreakpointTrap+0x35b < Çökme 
09 fffff807`71b844a8 fffff807`71532260 nt!DbgBreakPoint+0x1
0a (Inline Function) --------`-------- Wdf01000!Mx::MxDbgBreakPoint+0xc
0b fffff807`71b844b0 fffff807`714c6f0d Wdf01000!FxVerifierDbgBreakPoint+0x50
0c (Inline Function) --------`-------- Wdf01000!FxVerifierCheckIrqlLevel+0xc43 < Doğrulama kontrolü 
0d fffff807`71b844f0 fffff807`65932fab  Wdf01000!imp_WdfUsbTargetDeviceSendControlTransferSynchronously+0xf7d
0e fffff807`71b848c0 00000000`00000000 sshid+0x2fab

Verifier'in önemini şimdi anlamış olduk. Sorunun sebebini ilk çökmede verdi kendi dosyası olmasa bile. SteelSeries sürücüsü dediğim gibi, en başından beri. Bir USB aygıtına Senkranizasyon kontrolü yapılıyor ve burada bir breakpoint yakalıyor sistem/Verifier. Nerede çöktüğümüzü ve ayrıca önceden çağrılan sorunlu bir sürücüyü görebiliyoruz kırmızı ile. Yığına dikkat edersen Wdf01000!FxVerifierCheckIrqlLevel ve Wdf01000!FxVerifierDbgBreakPoint. Artık kesme noktasının neden çağrıldığını biliyoruz, FxVerifierCheckIrqlLevel işlevi tarafından bir hata ayıklayıcının içeri girmesini ve geliştiricinin sürücüsünün neden çöktüğünü görmesini sağlamak için kullanılıyor. SSHID, yanlış IRQL düzeyinde çağırılıyor bu da çökmeye direkt olarak sebep olması için yeterlidir çünkü IRQL 2 düzeyinde Kernel bir sürücünün herhangi bir işlevinin yaptığı bir yanlış sistemi çökertecek düzeyde olur.

Rich (BB code):
0: kd> !irql
Debugger saved IRQL for processor 0x0 -- 2 (DISPATCH_LEVEL)

Sürücünün doğrulama kontrolünde başarısız olduğunu ve bu nedenle kesme noktasının çağrıldığını varsayabiliriz, ancak bunu !wdflogdump komutunu kullanarak kesin olarak doğrulayabilirdik ama,

Dosya da her zamanki gibi yetersiz:[

Rich (BB code):
0: kd> !wdflogdump sshid
ReadListEntry failed
Warning: It looks like you're using the WDF debugger extension on a WDM
         driver. Framework logs will not be available

Muhtemelen karşılaşacağımız hata bu olacaktı:

Rich (BB code):
38: FxPkgPnp::HandleQueryBusRelations - WDFDEVICE 00001BF908FB2F68 returning 3 devices in relations FFFF820D1551C5D0
39: FxVerifierCheckIrqlLevel - Called at wrong IRQL; at level 2, should be at level 0


Sshid, açıkça çökmeye sebep oluyor. SS klavye sürücüsünü kaldırmalısın. Aygıt yöneticisi üzerinde bulabiliyor olman lazım ilgili sürücüyü, HID olmadan SS Keyboard aygıtı olarak ekli olması lazım...

Rich (BB code):
0: kd> lmvmsshid
Browse full module list
start             end                 module name
fffff807`65930000 fffff807`6593d000   sshid    T (no symbols)           
    Loaded symbol image file: sshid.sys
    Image path: sshid.sys
    Image name: sshid.sys
    Browse all global symbols  functions  data
    Timestamp:        Thu Feb 24 06:09:08 2022 (6216F6D4) 
    CheckSum:         00018401
    ImageSize:        0000D000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
    Information from resource tables:
Merhaba, sorunun çözüldüğüne sevindim. Bir süredir aktif değildim - malum sınavlar falan biraz yoğun oluyor. SS ekibinin istediği log'ları ben de isterdim ama uygulamayı hiç yüklemediğini bildiğim için istemedim. Elde edecekleri şeyler benim söylediğim şeylerin sebebini ortaya çıkarmayacaktı ama, ondan eminim. Klavyeni takıp sürücüyü tekrar yükleyerek sistemini kontrol edebilirsin. eğer tekrar mavi ekran verirse 2 3 haftadır sisteme taktığım klavye ile kontrol ettiğim sshid sürücüsünü kendi System32 klasörümden sana atabilirim. Bu da çok makul bir hareket olmayacak. Benim takip ettiğim süreçte hiçbir sorun yaşamadım ve neden olduğunu da anlamış değilim.

İstersen biraz daha duralım ve tam 1 ayı dolduralım. Bir kere 1 ay sonra vermişti. Bu arada sınavların umarım harika geçmiştir, seni tebrik ediyor ve sonsuz teşekkür ediyorum. Genelde 10 günden sonra her an verebiliyordu fakat bir kere maximum 1 ay kadar dayandı. Verdikleri cevapta ise diyorlar ki: "Windows ile iletişime geçin." Ben de dedim ki "Kardeşim sizin programınız sorunlu, Windows ne alaka?" :D
 
Son düzenleyen: Moderatör:
:) Eninde sonunda o noktaya gelecekleri belli ne yazık ki. Ayrıntılı bir şekilde yardım edemezler genelde çünkü çok fazla kişi iletişime geçiyordur. Bekleyebilirsin tabii ki. Konuyu henüz kapatmadım, emin olmak istiyorum ben de en az senin kadar.
 
:) eninde sonunda o noktaya gelecekleri belli ne yazık ki. Ayrıntılı bir şekilde yardım edemezler genelde çünkü çok fazla kişi iletişime geçiyordur. Bekleyebilirsin tabii ki. Konuyu henüz kapatmadım, emin olmak istiyorum ben de en az senin kadar.

Peki ilerleyen günlerde sorun halloldu deyip konuyu kapatırsak ve tekrarlarsa eski klavyeye döndüğümde baştan mi konu acmam gerekecek bundan devam edemez miyiz?
 
Bu konudan devam edeceğiz. Farklı konulara taşımanın artık bir anlamı olmaz.

Merhaba günaydın artık yavaştan yükleyeyim diyorum fakat pat diye SS indirip kurmak istemedim sizin belirlediğiniz yolda itina ile yürürken belirlediğiniz doğrultular halinde devam etmek istiyorum şimdi bana neler yapmam gerektiğini adım adım yazar mısınız rica etsem. Mükemmel iş cıkarttık bunu bozmak istemem.

@bicy,
 
Son düzenleme:
Çok incelikli bir işe girişmeye gerek yok. Tüm inceliği sorunu bularak yaptık ve o yeterliydi. Tek yapman gereken klavyeni takıp sistemi kontrol etmek olacaktır artık.

Selam, an itibarıyla klavyeyi taktım. 1 aydan fazla başarılı şekilde ilerledik, umarım tekrar buraya aynı sorunu yaşıyorum diye yazmak zorunda kalmam... Size sonsuz teşekkürler ederim.

Çok incelikli bir işe girişmeye gerek yok. Tüm inceliği sorunu bularak yaptık ve o yeterliydi. Tek yapman gereken klavyeni takıp sistemi kontrol etmek olacaktır artık.

Selam hata yedim biraz önce en son 11. ayın 10'unda yemişim.
Minidumpu bıraktım yine SteelSeries ile mi ilgili yoksa başka bir sorun mu inceler misin?

010725-12468-01.dmp

Selam, an itibarıyla klavyeyi taktım. 1 aydan fazla başarılı şekilde ilerledik, umarım tekrar buraya aynı sorunu yaşıyorum diye yazmak zorunda kalmam... Size sonsuz teşekkürler ederim.

Selam hata yedim biraz önce en son 11. ayın 10'unda yemişim.
Minidumpu bıraktım yine SteelSeries ile mi ilgili yoksa başka bir sorun mu inceler misin?

05:56'da tekrar yedim üst üste 24 saat olmadan 2 mavi ekran lütfen bu ikisini inceleyip dönüş yapar mısın @bicy
 
Son düzenleme:
Bildirim yeni düştüğü için yeni görüyorum. Sorun aynı, yani SS sürücüsü. System32 içinden sshid dosyalarını sildikten sonra olduğu gibi klavyeye ait sürücüleri Aygıt Yöneticisi'nden silip (bu arada klavye takılı olmamalıydı) tekrar klavyeyi takıp kontrol ettin değil mi?
 
Bildirim yeni düştüğü için yeni görüyorum. Sorun aynı, yani SS sürücüsü. System32 içinden sshid dosyalarını sildikten sonra olduğu gibi klavyeye ait sürücüleri Aygıt Yöneticisi'nden silip (bu arada klavye takılı olmamalıydı) tekrar klavyeyi takıp kontrol ettin değil mi?

Evet, evet. 1 ay başka klavye kullandım ve sonra kullanabilirsin dedikten sonra birkaç hafta daha bekledim ve SS'yi taktım. Ortalama 35- 40 gün sorunsuz kullandım ve tekrar başladı, ne yapmalıyım? Klavyeyi satacağım en sonunda o olacak. Sen bana bir ara Windows dosyalarımı paylaşayım falan gibi öneriler vermiştin... Bu arada bütün USB'leri tek tek güncelledim ve BIOS'u da güncelledim. Şu anki önerin nedir? SS klavyede yapti yine aynı problemi, yani nasıl bir yol izlemeliyiz?
 
Son düzenleyen: Moderatör:
Sen bana bir ara Windows dosyalarımı paylaşayım falan gibi öneriler vermiştin.
Maalesef. Emin olmadığım için sansürlemiştim zaten ve üzerinden uzunca bir süre geçmesine rağmen herhangi bir hataya zorlamadı beni. Çok güvenli bir yol değil System32 içine erişim sağlamak için.

Bu sırada basit bir WDF tabanlı sürücü yazıp açıkçası birkaç hataya zorladım ve aldığın hatanın bir benzerini aldım. Kodlamada ne tür bir hatanın bu tür bir soruna sebep olabileceğini anlamak içindi ve üzerinden 2-3 denemeden fazla da durmadım açıkçası. Yazdığım kod sshid gibi bir sürücü için yazılan koddan çok daha düşük seviye bir koddu çünkü. Yine de durumu az buz anlamış sayılırım.

Rich (BB code):
1: kd> !wdflogdump bicy.sys
Trace searchpath is:

Trace format prefix is: %7!u!: %!FUNC! -
Trying to extract TMF information from - C:\ProgramData\dbg\sym\Wdf01000.pdb\066683F62DF745C1C6CD389F00F53E281\Wdf01000.pdb
Gather log: Please wait, this may take a moment (reading 4024 bytes).
% read so far ... 10, 20, 30, 40, 50, 100
There are 39 log entries
--- start of log ---
1: FxIFRStart - FxIFR logging started
[.....]
37: FxVerifierCheckIrqlLevel - FxVerifierCheckIrqlLevel - Called at wrong IRQL; at level 2, should be at level 0
---- end of log ----

Tabii bu çok incelikli bir kod değil. basit olarak kontrol mekanizmasına sahip olmayan bir hatada IRQL hatasını yakalayabildim.

HandleQueryBusRelations fonksiyonunu özellikle kullandım çünkü bir PnP aygıtı ile ilgili en olasılıklı cevabı bu şekilde alabilirdim. Kısacası; bu fonksiyon çağrıldığında, IRQL seviyesinin 0'dan daha yüksek olduğu bir durumda ExAllocatePoolWithTag fonksiyonu ile sayfalanabilen belleğe (PagedPool) erişmeye çalıştım. Lakin Bu durum, yalnızca IRQL = 0 seviyesinde yapılabilecek bir işlem olduğu için Verifier bunu tespit edip senin aldığın hatanın aynısını verdi. Tabii ki bir IRQL kontrol mekanizması bile olmayan basit bir koddan ibaretti. Nihayetinde bu kontrol sağlanınca sorun çözülüyordu.

SSHID gibi bir sürücü bu kontrolden daha nitelikli bir hataya sahip olmalı ki Verifier çalışmıyorken bile sistemi çökertiyor... IRQL yükseltme, IRQL düşürme ya da belleğe erişim. Açıkçası BUS ile her şeye bunlar sebep olabilir ve sürücü kapalı kaynakken bunu tespit etmem imkansız. Ek olarak senin hatanda hangi fonksiyonda çöküyor da bu hatayı yaratıyor ondan bile emin değiliz, fonksiyon o an kaç aygıtla ilişkide, kaç kere çağrılıyor ya da çağrılmadan önce FxVerifier hangi kontrolleri yapıyor bilmiyoruz çünkü buna sahip bir dump dosyası sahibi de hiç olmadık. Özetle:

Sürücünün tüm dosyaları silinip baştan yüklendi. / Çözülmedi.
Sürücüyü kullanan aygıt çıkartıldı. / Çözüldü.

Belki de sorun klavye değil de sürücü derken ben hatalıydım. Bunu bilemem ama göründüğü kadarıyla zaten hem format attın hem sürücüyü sildin yükledin ama tek olumlu sonucu klavye takılı değilken aldın. SteelSeries ile iletişime geçip bir sürücü desteği de almadığın sürece bir Windows geliştiricisi olmadığımız için sana hangi PnP aygıtının hangi IRQ kullanımını değiştirmeyi burdan anlatamayacağımdan da dolayı Klavyeni değiştirmek isteyebilirsin.