Son Konu

UNEXPECTED_KERNEL_MODE_TRAP Hatası Nasıl Çözülür?

Garfield

Yeni Üye
Katılım
9 Ocak 2022
Mesajlar
171,000
Tepkime
0
Puanları
36
Yaş
45
Credits
0
Geri Bildirim : 0 / 0 / 0
unexpected-kernel-mode-trap-rotated.jpg

“UNEXPECTED_KERNEL_MODE_TRAP” mavi ekran kusurunun neden olduğuna ve bu yanılgıyı nasıl çözebileceğimize bakıyoruz.


Mavi ekran yanlışlarını tahlil etmenin zahmetli olabileceği aşikar. Şayet siz de UNEXPECTED_KERNEL_MODE_TRAP yanılgı kodu ile karşılaştıysanız, gelin birlikte tahlil edelim.

Öncelikle, mavi ekran yanılgılarını daha rahat tahlil edebilmemiz için küçük bir yazılım olan BlueScreenView yazılımını bilgisayarımıza kurmalıyız. Bilgisayarınız 64 bit ise buradan, 32 bit ise de buradan BlueScreenView’ı indirebilirsiniz.
Minidump-Analizi-640x347.jpg
WinDbg programının arayüzü.
İsterseniz, güncellenen WinDbg Preview programını kullanarak daha ayrıntılı bilgiler edinebilir ve daha yeterli tahliller yapabilirsiniz. WinDbg programı ile tahlil yapmak istiyorsanız şu yazımızı referans alabilirsiniz.

Şayet hazırsanız, başlayalım!

Bu yanılgının karşınıza çıkma sebebi, x86 işlemcilerde olan istisna yakalama düzeneğidir. x86 işlemcilerde 3 türlü istisna vardır:
  • Fault: Bu istisnalar düzeltilebilen cinste istisnalardır ve program (veya işletim sistemi) hiçbir şey olmamışçasına devam edebilir.
  • Abort: Nadiren karşılaştığımız kurtarılamayan istisna çeşididir.
  • Trap: Bu cins istisnalar olur olmaz çabucak rapor edilir. İşletim sisteminin bu istisnalar için bir tablosu bulunmaktadır.
UNEXPECTED_KERNEL_MODE_TRAP yanlışı, bahsettiğimiz “trap” çeşidinde istisnaların yakalanamaması halinde oluşan bir kusurdur. Windows’un NT çekirdeğinin çalışmayı kesip mavi ekran verme sebebi ise, bu kusurların NT çekirdeği tarafından yakalanma yetkisinin olmayışı yahut işlemcinin “double fault“, yani “kusurun yanılgısı” durumuna düşmesidir. “Double fault” çeşidi istisnalar, “abort” kategorisi altında bedellendirilmektedir, yani kurtarılamazdır.

Örneğin bir sayının sıfır ile bölünmesi durumu Windows NT çekirdeği tarafından yakalanmaya çalışırken, bu durumun bir tane daha istisna tetiklemesi bir “double fault” ögedir, bu da Windows NT çekirdeğini durdurup UNEXPECTED_KERNEL_TRAP_MODE kusur kodlu mavi ekran yanlışına sebep olmaktadır.

BlueScreenView’ı açtığınız vakit şayet sisteminizde çekirdek yanılgı dökümleri olan minidump’lar mevcut ise bunlar direkt karşınıza çıkacaktır.
bluescreenview-640x359.jpg
BlueScreenView’ın arayüzü, ve işaretli kısımda bizim bu yazıda ilgilenmiş olduğumuz yanılgı durmakta.
İşaretlediğimiz döküm belgesine sağ tıkladığımız vakit, açılan menüden “Properties” (Özellikler) diyelim.
bluescreenview2-640x359.jpg
Sağ tık menüsü. Alttan ikinci seçenek olan “Properties” (Özellikler) seçeneğine tıklayalım.
Karşımıza şöyle bir pencere gelecektir:
bluescreenview3-344x480.jpg
“BlueScreenView” programının “Özellikler” penceresi.
Görmüş olduğunuz üzere BlueScreenView, minidump belgemizdeki bilgileri derleyerek bizlere sundu. Burada hangi şoförün mavi ekrana sebep olduğu üzere bilgileri görebilmekteyiz. Biz bu mavi ekranı “NotMyFault” isimli geliştirici aracı ile oluşturduğumuzdan ötürü, “myfault.sys” isimli şoförden kaynaklandığı yazıyor.

Microsoft’un geliştiriciler ve mavi ekran tahlil etmek isteyen bireyler için sunmuş olduğu bir tablo bulunuyor. Örneğin UNEXPECTED_KERNEL_TRAP_MODE yanılgısı için bizlerden minidump’ın birinci parametresine bakmamız istenmiş ve şöyle bir tablo sunulmuş:
Parametre 1Yanılgı sebebi olan istisna koduAçıklama
0x00000000Sıfır ile kısım yanlışıx86 işlemcilerde bölme sürecinin yapıldığı “DIV” isimli Assembly komutunun bir parametresi sıfır olunca alınan kusur. Genelde yazılım yanlışlarından ötürü olmakla bir arada, bellek yanılgıları üzere donanım yanılgılarından ötürü da olur.
0x00000004Overflowİşlemcinin “overflow” (taşma) bayrağı etkinken “INTO” (“interrupt on overflow” – taşma esnasında kesinti) komutu çalışırsa, işlemci bu istisnayı oluşturacaktır.
0x00000005Bounds Check FaultBir değişken dizisinin (array) büyüklüğü, aranan endeksten küçükse bu yanılgı oluşur. Örneğin 10 elemanlı dizide 64. elemanı arayınca oluşabilecek bir istisnadır.
0x00000006Invalid Opcodeİşlemcide tarifli olmayan bir komut çalıştırılmaya çalışılmış. Genelde bellek arızası bu probleme sebep olabilir.
0x00000008Double FaultYazının başında da bahsettiğimiz üzere, bir istisna yakalanmaya çalışılırken oluşan istisna durumudur. Bir nevi “yanılgının kusuru“. Genelde “stack overflow” (yığın bellek taşması) yanılgılarından ötürü olmaktadır.
Ekstra olarak çok az durumlarda birinci parametre, bu pahaları de alabilir:
Parametre 1Açıklama
0x00000001Sistem yanılgı ayıklama daveti.
0x00000003Kusur ayıklayıcı durma noktası (breakpoint). Yanılgı ayıklayıcı kullanıyorsanız, birçok yanılgı ayıklayıcı program bu istisnayı yakalayabildiği için bu durumun olma mümkünlüğü çok düşüktür.
0x00000007FPU (ondalık süreç ünitesi) komutu çalıştırılmasına karşın FPU’ya ulaşılamıyor. Şayet 90’lardan kalma bir bilgisayara sahip değilseniz bu sebepten ötürü mavi ekranın olma ihtimali çok çok düşüktür, zira artık FPU’lar işlemcilere entegre gelmekte.
0x0000000Aİşletim sistemlerinde çalışmakta olan bir uygulamanın bilgilerini tutan data yapısı Task State Segment (TSS) bozukluğu.
0x0000000BBir uygulama var olmayan bellek bölümüne erişmeye çalışınca bu paha verilir. İşletim sistemlerinin bellek idare düzenekleri hakkında daha fazla bilgi için şu yazımızı okuyabilirsiniz.
0x0000000CBelleğin stack limitinin dışında bir yere erişilmeye çalışıldığında ve Windows NT çekirdeği buna müsaade vermeyince parametreye bu bedel atanıyor. Şayet sizin yaptığınız uygulama yahut şoförden ötürü bu mavi ekranı alıyorsanız, stack yerine heap belleği kullanabilirsiniz.
0x0000000DGenel müdafaa yanılgısı. Segmentasyon yanlışı, işlemcinin çekirdek modunda olmamasına karşın (ring 0) çekirdek modu komutlarının işlenmesi belirli başlı sebepleridir.
Ama bu ender durumlardan korkmamıza gerek yok, zira bu listedeki birçok durum Windows NT çekirdeğinin istisna yakalama düzenekleri tarafından işlenip kusur bildirisi olarak kullanıcıya sunuluyor.

Şayet minidump’ınızdaki parametre bu tablodaki rastgele bir parametre ile uyuşmuyor ise, şu sayfadaki tablodan veya Intel’in x86 mimarisi için yayınlamış olduğu Intel Developer’s Manual’dan minidump’ınızdaki parametrenin ne manaya geldiğini bulabilirsiniz.

Ekseriyetle bu yanılgıya sebebiyet veren şey, arızalı yahut uyumsuz bir donanımdır. Bilhassa bellek uyumsuzlukları bu yanlışa sebebiyet verir.

Ayrıyeten çekirdek düzeyinde yığın bellek taşması (stack overflow) olduğu vakit da bu yanılgı karşınıza çıkar. Üstteki fotoğrafların ilişkin olduğu sanal makinemiz işte bu kusur ile bir mavi ekran vermiş.

Donanımsal Tahlil teklifleri


Şayet bilgisayarınıza son vakitlerde bir donanım eklediyseniz, bu donanımı sökün ve yanılgı durumunu gözlemleyin. Şayet sistem stabil ise, donanımınızı değiştirebilirsiniz. Varsa, sistem üreticisinin üretmiş olduğu teşhis yazılımını kullanın.

Bu yanlışın başka bir sebebi ise bellek olabilir. Memtest86+ üzere araçlar ile belleğinizdeki kusurları tespit edebilirsiniz.

Sisteme bağlı depolama aygıtlarının Windows sürümünüz ile uyumlu olduğundan emin olun ve her vakit en aktüel Windows 10 sürümünü kullanın.

Ayrıyeten anakartınızdaki bozuk bir bileşen bu yanılgıyı tetikliyor olabilir. Şayet güç kaynağınızda sorun var ise, bu da probleme sebebiyet verebilir.

Sisteminizde overclock varsa, sorunun kaynağı olabilir. Şayet mevcut ise, BIOS’un “memory caching” yapmasını önleyin.

Yazılımsal Tahlil Teklifleri
eventvwr-2-640x379.jpg
“Olay Görüntüleyicisi” programının arayüzü. Size Windows NT’de olanı biteni söyler.
Olay Görüntüleyicisi’nden neden bu sorunu yaşadığınız hakkında daha uygun bir açıklama duyabilirsiniz.

Bilgisayarınıza bağlı olan aygıtların firmware güncellemeleri varsa güncelleyin. Yanılgılı bir firmware, bu kusurun aktörü olabilir.

Şayet Windows sürümünü güncelleme yolu ile yükselttiyseniz, yazılımsal bir uyumsuzluk durumu olması olası. Eski Windows sürümünüzde çalışan şoför, antivirüs yahut uygulamalar yeni sürümde çalışmayabilir yahut düzgün çalışmayabilir. Bu sebepten dolayı sizlere pak heyetim yapmanızı tavsiye ederiz.

Mavi ekran yanlışlarının genel sebepleri bir uygulamadan fazla Windows NT çekirdeği ile birlikte çalışan donanım şoförleri yahut donanımlardır. Ayrıyeten minidump belgeleri bizlere sorunun nerde olduğunu tam manası ile belirtmektedir. Şayet bir mavi ekran kusuru aldıysanız Technopat Sosyal’de özel olarak açtığımız Mavi Ekran yanılgı tahlili kısmında mevzu açabilir, bu yazı hakkında soru ve eklemeleriniz için aşağıdaki “Yorumlar” kısmını kullanabilirsiniz.
 
Üst Alt