“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.
İ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.
Ö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.
İşaretlediğimiz döküm belgesine sağ tıkladığımız vakit, açılan menüden “Properties” (Özellikler) diyelim.
Karşımıza şöyle bir pencere gelecektir:
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 1 | Yanılgı sebebi olan istisna kodu | Açıklama |
0x00000000 | Sı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. |
0x00000004 | Overflow | İş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. |
0x00000005 | Bounds Check Fault | Bir 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. |
0x00000006 | Invalid Opcode | İşlemcide tarifli olmayan bir komut çalıştırılmaya çalışılmış. Genelde bellek arızası bu probleme sebep olabilir. |
0x00000008 | Double Fault | Yazı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. |
Parametre 1 | Açıklama |
0x00000001 | Sistem yanılgı ayıklama daveti. |
0x00000003 | Kusur 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. |
0x00000007 | FPU (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. |
0x0000000B | Bir 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. |
0x0000000C | Belleğ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. |
0x0000000D | Genel 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. |
Ş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
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.