Aracılığıyla paylaş


Hata Denetimi 0x139: ÇEKİRDEK_GÜVENLİK_DENETİMİ_HATASI

KERNEL_SECURITY_CHECK_FAILURE hata denetimi 0x00000139 değerine sahiptir ve çekirdeğin kritik bir veri yapısının bozulmasını algıladığını gösterir.

Önemli

Bu makale programcılara yöneliktir. Bilgisayarınızı kullanırken mavi ekran hata kodu alan bir müşteriyseniz bkz. Mavi ekran hatalarını giderme.

Hata Kontrolü 0x139 KERNEL_SECURITY_CHECK_FAILURE Parametreleri

Parametre Açıklama
1 Yolsuzluğun türü. Daha fazla bilgi için aşağıdaki tabloya bakın.
2 Hata denetimine neden olan özel durum için tuzak çerçevesinin adresi
3 Hata denetimine neden olan özel durum için özel durum kaydının adresi
4 Rezerve edildi

Aşağıdaki tabloda Parametre 1 için olası değerler açıklanmaktadır.

Parametre 1 Açıklama
0 Yığın tabanlı arabellek taşmış (eski /GS ihlali).
1 VTGuard enstrümantasyon kodu, geçersiz bir sanal işlev tablosu kullanma girişimi algıladı. Genellikle, bir C++ nesnesi bozuktur ve sonra bir sanal yöntem çağrısı bozuk nesnenin bu işaretçisini kullanmaya çalıştı.
2 Yığın tanımlama bilgisi izleme kodu, yığın tabanlı arabellek taşması (/GS ihlali) algıladı.
3 LIST_ENTRY bozuk (örneğin, çift kaldırma). Daha fazla bilgi için aşağıdaki Neden bölümüne bakın.
4 Rezerve edildi
5 Geçersiz parametreleri önemli olarak kabul eden bir işleve geçersiz bir parametre geçirildi.
6 Yükleyici, yığın tanımlama bilgisi güvenlik tanımlama bilgisini düzgün başlatmadı. Bu hata denetiminin nedeni, yalnızca Windows 8'de çalışacak bir sürücü oluşturmak ve sürücü görüntüsünü Windows'un önceki bir sürümüne yüklemeye çalışmaktır. Sorundan kaçınmak için sürücüyü Windows'un önceki bir sürümünde çalışacak şekilde oluşturmanız gerekir.
7 Ölümcül bir program çıkışı istendi.
8 Derleyici tarafından eklenen bir dizi sınırları denetimi geçersiz bir dizi dizin oluşturma işlemi algıladı.
9 RTL_QUERY_REGISTRY_TYPECHECK olmadan RTL_QUERY_REGISTRY_DIRECT belirterek RtlQueryRegistryValues çağrısı yapıldı ve hedef değer güvenilir bir sistem kovanında değildi.
10 Dolaylı çağrı koruması denetimi geçersiz denetim aktarımı algılandı.
11 Yazma koruması denetimi geçersiz bellek yazma algılandı.
12 Geçersiz bir fiber bağlamına geçiş yapmak için bir girişimde bulunuldu.
13 Geçersiz bir kayıt bağlamı atamak için bir girişimde bulunuldu.
14 Bir nesnenin başvuru sayısı geçersiz.
18 Geçersiz bir jmp_buf bağlama geçiş girişiminde bulunuldu.
19 Salt okunur verilerde güvenli olmayan bir değişiklik yapıldı.
20 Kriptografik bir kendi kendine test başarısız oldu.
21 Geçersiz bir özel durum zinciri algılandı.
22 Bir şifreleme kitaplığı hatası oluştu.
23 DllMain içinden geçersiz bir çağrı yapıldı.
24 Geçersiz bir görüntü tabanı adresi algılandı.
25 Gecikmeli yük içeri aktarma işlemi korunurken kurtarılamaz bir hatayla karşılaşıldı.
26 Güvenli olmayan bir dahili numaraya çağrı yapıldı.
27 Kullanım dışı bırakılan bir hizmet çağrıldı.
28 Sınırların dışında arabellek erişimi algılandı.
29 RTL_BALANCED_NODE RBTree girdisi bozuk.
37 Aralık dışı bir anahtar atlama tablosu girişi çağrıldı.
38 Geçersiz bir hedefe longjmp denendi.
39 Dışarı aktarma gizlenmiş bir çağrı hedefi geçerli bir çağrı hedefi yapılamadı.

Nedeni

Parametre 1 tablosunu ve döküm dosyasını kullanarak, bu türdeki birçok hata denetiminin nedenini daraltabilirsiniz.

LIST_ENTRY bozulmayı izlemek zor olabilir. Bu hata denetimi, iki kez bağlantılı bir listeye tutarsızlığın getirildiğini gösterir (tek bir liste girdi öğesi listeye eklendiğinde veya listeden kaldırıldığında algılanır). Ne yazık ki, tutarsızlık, bozulmanın meydana geldiği anda mutlaka tespit edilmez, bu nedenle kök nedeni belirlemek için bazı dedektiflik çalışmaları gerekebilir.

Liste girişinin bozulmasının yaygın nedenleri şunlardır:

  • Sürücü KEVENT gibi bir çekirdek eşitleme nesnesini (örneğin, bir iş parçacığı aynı KEVENT'te beklerken bir KEVENT'i çift başlatma veya başka bir iş parçacığı bu KEVENT'i kullanırken yığın tabanlı KEVENT'in kapsamın dışına çıkmasını sağlama) bozmıyordu. Bu tür bir hata kontrolü tipik olarak nt! Ke* veya nt! Ki* kodu. Bu durum, bir iş parçacığı bir eşitleme nesnesinde beklemeyi bitirdiğinde veya kod bir eşitleme nesnesini sinyalli duruma getirmeye çalıştığında gerçekleşebilir. Genellikle, sinyal alınan eşitleme nesnesi bozuk olan nesnedir. Bazen özel havuza sahip Sürücü Doğrulayıcı, (bozuk eşitleme nesnesi zaten serbest olan bir havuz bloğundaysa) suçlunun izlenmesine yardımcı olabilir.
  • Bir sürücü düzenli bir KTIMER'ı bozmuş. Bu tür bir hata kontrolü tipik olarak nt! Ke* veya nt! Ki* kodu ve bir zamanlayıcıyı işaret etmeyi veya bir zamanlayıcı tablosuna bir zamanlayıcı eklemeyi veya çıkarmayı içerir. Denetlenen zamanlayıcı bozuk olabilir, ancak hangi zamanlayıcının bozuk olduğunu belirlemek için zamanlayıcı tablosunu !timer ile incelemek (veya zamanlayıcı listesi bağlantılarını el ile yürümek) gerekebilir. Bazen, özel havuzlu Sürücü Doğrulayıcı suçlunun izini sürmeye yardımcı olabilir (bozuk KTIMER zaten serbest olan bir havuz bloğundaysa).
  • Bir sürücü iç LIST_ENTRY stili bağlı listeyi yanlış yönetti. Tipik bir örnek, iki RemoveEntryList çağrısı arasına liste girişini yeniden eklemeden aynı liste girişinde RemoveEntryList'i iki kez çağırmaktır. Aynı listeye bir girişi iki kez eklemek gibi başka varyasyonlar da mümkündür.
  • Sürücü, ilgili listeden veri yapısını kaldırmadan bir LIST_ENTRY içeren bir veri yapısını serbest bırakır ve eski havuz bloğu yeniden kullanıldıktan sonra liste incelendiğinde bozulma algılanır.
  • Bir sürücü düzgün eşitleme olmadan eşzamanlı olarak LIST_ENTRY stilinde bir liste kullandı ve bu da listede bir güncelleştirmenin bozulmasına neden oldu.

Çoğu durumda, bağlantılı listeyi hem ileri hem de geri yürüterek (dl ve dlb komutları bu amaç için kullanışlıdır) ve sonuçları karşılaştırarak bozuk veri yapısını belirleyebilirsiniz. Listenin ileri ve geri yürüyüş arasında tutarsız olduğu yer, tipik olarak bozulmanın yeridir. Bağlantılı liste güncelleştirme işlemi komşu bir öğenin liste bağlantılarını değiştirebileceğinden, altta yatan suçlu olabileceğinden, bozuk bir liste girişinin komşularına yakından bakmalısınız.

Birçok sistem bileşeni dahili olarak LIST_ENTRY listelerini kullandığından, sistem API'lerini kullanan bir sürücü tarafından çeşitli türlerde kaynakların yanlış yönetilmesi, sistem tarafından yönetilen bağlantılı listede bağlantılı listenin bozulmasına neden olabilir.

Çözüm

Liste girişi bozulması sorunlarının nedenini belirlemek için genellikle hata ayıklayıcının diğer bilgileri toplamak için kullanılması gerekir. Durdurma kodunun, durdurma kodu görüntülendiğinde çalışan kod gibi benzer özelliklere sahip olup olmadığını görmek için birden çok döküm dosyası incelenmelidir.

Daha fazla bilgi için bkz: Windows hata ayıklayıcılarını (WinDbg) kullanarak kilitlenme bilgi dökümü analizi, !analyze Uzantısını Kullanma ve !analyze.

Durdurma koduna yol açan daha üst düzey olaylar olup olmadığını görmek için olay günlüğünü kullanın.

Bu genel sorun giderme ipuçları yardımcı olabilir.

  • Sisteme yakın zamanda donanım eklediyseniz bunu kaldırmayı veya değiştirmeyi deneyin. Bunun yerine üreticiye herhangi bir yama sağlanıp sağlanmadığını da sorabilirsiniz.

  • Kısa süre önce yeni cihaz sürücüleri veya sistem hizmetleri eklendiyse bunları kaldırmayı veya güncelleştirmeyi deneyin. Yeni hata denetimi kodunun görünmesine neden olan sistemde nelerin değiştiğini belirlemeyi deneyin.

  • Hataya neden olan cihazı veya sürücüyü saptamaya yardımcı olabilecek diğer hata iletileri için Olay Görüntüleyicisi'nde Sistem Günlüğü'nü denetleyin. Sistem günlüğünde, mavi ekranla aynı zaman penceresinde oluşan kritik hataları arayın.

  • Ünlem işareti (!) ile işaretlenmiş herhangi bir aygıtın olup olmadığını görmek için Aygıt Yöneticisi'ne bakın. Hatalı bir sürücü için sürücü özelliklerinde görüntülenen olay günlüğünü gözden geçirin. İlgili sürücüyü güncelleştirmeyi deneyin.

  • Bir virüs algılama programı çalıştırın. Virüsler, Windows için biçimlendirilmiş her tür sabit diske bulaşabilir ve sonuçta ortaya çıkan disk bozulması sistem hata denetimi kodları oluşturabilir. Virüs algılama programının Ana Önyükleme Kaydı'nda virüs olup olmadığını kontrol ettiğinden emin olun.

  • Daha genel sorun giderme bilgileri için bkz. Hata Denetimi Mavi Ekran Verilerini Analiz Etme.

Ayrıca bakınız

Windows hata ayıklayıcılarını (WinDbg) kullanarak çökme dökümü analizi

WinDbg ile Kernel-Mode Döküm Dosyasını Çözümleme