Makale numarası: 818501 - Son Gözden Geçirme: 16 Mayıs 2007 Çarşamba - Gözden geçirme: 7.3

Dur Hatası IRQL_NOT_LESS_OR_EQUAL (0xA) alındıktan sonra sistemde nasıl hata ayıklanır

Hepsini aç | Hepsini kapa

™zet

Bu makalede, aşağıdaki hata iletisine neden olan sürücüyü belirlemek için örnek bir hata ayıklama oturumunun nasıl kullanılacağı anlatılmaktadır:
Dur Hatası IRQL_NOT_LESS_OR_EQUAL (0xA)

Belirtiler

Bir sürücü yüklendikten sonra, sistem yanıt vermez ve nt!KiActivateWaiterQueue+0x27 konumunda aşağıdaki hata iletisini alırsınız:
Dur Hatası IRQL_NOT_LESS_OR_EQUAL (0xA)
İlk yığın izleme, sorunun Fast Fat sürücüsünde olduğunu gösterir.

Neden

Bu sorun genel olarak, sürücüler aynı iş öğesi üzerinde, iş öğesi yürütülmeden önce IoQueueWorkItem işlevini ya da ExQueueWorkItem işlevini iki kere çağırdığı için oluşmaktadır.

Özellikle IO_WORKITEM yapısını ya da WORK_QUEUE_ITEM yapısını statik olarak ayıran sürücüler bu sorundan etkilenebilir. Bu gibi statik ayırma gerçekleştiren sürücülerin, statik olarak ayrılan öğeyi öğe zaten sıraya alınmış olduğunda kullanmaya çalışmamaya dikkat etmeleri gerekir.

Daha fazla bilgi

"Belirtiler" bölümünde açıklanan hatayla yanıt vermeyen bir sistemde hata ayıklamak için:
  1. Örneğin Xyz.sys adlı bir sürücü yüklediğiniz, sistemin yanıt vermeyi durdurduğu ve daha önce bahsedilen 0xA dur hatasını aldığınız kabul edilsin.
  2. Hata ayıklayıcıyı doğru simgelerle başlatın ve bu makalenin ilerisinde anlatılan hata ayıklama örneğini izleyin.

    Bu örnekte çekirdek hata ayıklayıcısı kullanılmaktadır. KD'yi ya da WinDbg'yi kullanabilirsiniz. Bu yöntemi sürücü doğrulayıcıyı etkinleştirerek de kullanabilirsiniz.
  3. Hata ayıklayıcıdaki kv komutu yığını gösterir. Aşağıdaki yığın izleme WORKER_QUEUE sırasının bozulduğunu gösterir.
    Yığın İzleme:
    f8979768 804f076c fc502008 ff651fb8 e16de008 nt!KiActivateWaiterQueue+0x27
    f8979790 f8462061 00000000 00000000 00000000 nt!KeWaitForSingleObject+0x198
    f89797ac f8462289 ff651fb8 00000600 ff651fb8 Fastfat!FatWaitSync+0x18
    f897989c f8461e62 ff651fb8 fc502008 e16de008 Fastfat!FatNonCachedIo+0x36b
    f8979a2c f845b6b0 ff651fb8 fc502008 fc502008 Fastfat!FatCommonWrite+0xf29
    f8979a70 804eca36 82378020 fc502008 823d1698 Fastfat!FatFsdWrite+0xaa
    f8979a80 f847f3b8 804f46ad f377404c f8979ab8 nt!IopfCallDriver+0x31
    f8979a90 804eca36 82379a08 e27dac88 f8979aec sr!SrWrite+0xa8
    f8979ad8 804f46ad f376a0a6 823cafb8 82035ca8 nt!IopfCallDriver+0x31
    f8979adc f376a0a6 823cafb8 82035ca8 80570400 nt!IoSetThreadHardErrorMode
  4. 3. adımdaki yığını gözden geçirirseniz, hatalı sürücünün Fast Fat olduğunu düşünebilirsiniz. Ancak, KQUEUE yapısı bozuk bir LIST_ENTRY göstermektedir:
    kd> dv
    Queue = ffffffff8054eddc
    kd> dt -r1 _KQUEUE 8054eddc
    +0x000 Header :
    +0x000 Type : 0x4 ''
    +0x001 Absolute : 0 ''
    +0x002 Size : 0xa ''
    +0x003 Inserted : 0 ''
    +0x004 SignalState : 1
    +0x008 WaitListHead : _LIST_ENTRY [ 0x823cb438 - 0x823ca6b0 ]
    +0x010 EntryListHead : [ 0x0 - 0x820ae3c8 ]
    +0x000 Flink : (null)
    +0x004 Blink : 0x820ae3c8 [ 0x0 - 0x8054edec ]
  5. BLINK yapısının başvurusu kaldırıldığında, bir WORK_QUEUE_ITEM öğesine işaret ettiği görülür (burada, gerçekte bir IO_WORKITEM öğesindeki ilk parametredir).

    Not IO_WORKITEM öğesinin yapı tanımı Windows XP ve sonraki sürümlerinde simge sunucusu kullanılarak alınabilir. Yapı önceki Windows sürümleriyle aynıdır, ancak simgeler yoktur.
    kd> dt -r1 _IO_WORKITEM 820ae3c8
    +0x000 WorkItem :
    +0x000 List : _LIST_ENTRY [ 0x0 - 0x8054edec ]
    +0x008 WorkerRoutine : 0x8057fb78 nt!IopProcessWorkItem+0
    +0x00c Parameter : 0x820ae3c8
    +0x010 Routine : 0xf289dff0 +0
    +0x014 DeviceObject : 0xfe01b110
    +0x000 Type : 0
    +0x002 Size : 0
    +0x004 ReferenceCount : 0
    +0x008 DriverObject : (null)
    +0x00c NextDevice : (null)
    +0x010 AttachedDevice : 0x1fde0970
    +0x014 CurrentIrp : (null)
    +0x018 Timer : (null)
    +0x01c Flags : 0
    +0x020 Characteristics : 0x490049
    +0x024 Vpb : 0x000c0105
    +0x028 DeviceExtension : 0x0001ffff
    +0x02c DeviceType : 0x86a24
    +0x030 StackSize : 8 ''
    +0x034 Queue : __unnamed
    +0x05c AlignmentRequirement : 0x7fffffff
    +0x060 DeviceQueue : _KDEVICE_QUEUE
    +0x074 Dpc : _KDPC
    +0x094 ActiveThreadCount : 0
    +0x098 SecurityDescriptor : (null)
    +0x09c DeviceLock : _KEVENT
    +0x0ac SectorSize : 0
    +0x0ae Spare1 : 0
    +0x0b0 DeviceObjectExtension : (null)
    +0x0b4 Reserved : (null)
    +0x018 Context : 0x81f4a14c 
    Not Aygıt nesnesinin içeriği geçerli bir aygıt nesnesi olmadığını göstermektedir. Ancak, Context alanı geçerlidir ve !pool komutu Culprit Pool Tag öğesinin bir pooltag etiketini gösterir.
  6. Routine adresinin geçerli olup olmadığını belirlemek için, havuz adresi üzerinde ln komutunu kullanın. Simgelere sahipseniz, havuz adresi üzerinde ln komutunu kullanmanın sonucu sorunlu sürücüdeki bir adrese karşılık gelmelidir. Bu nedenle, tecrübeye dayalı bir tahmin, IO_WORKITEM öğesinin havuz etiketinin sürücüsü tarafından yapılan bir aygıta karşılık geldiğidir.
  7. Aşağıdaki örnekte iş sırası tek bir öğe içermektedir. Bu nedenle, BLINK başvurusunun kaldırılması bunun kolay bir yolu olmuştur. İş sırası birden fazla öğe içerebileceğinden, BLINK özelliği KQUEUE öğesine geri işaret eden iş öğesini buluncaya kadar tüm iş öğelerinin BLINK öğesinin başvurusunu kaldırmalısınız.
    kd> !pool 81f4a14c
    Pool page 81f4a14c region is Nonpaged pool
    *81f4a140 size: 2b8 previous size: 8 (Allocated) *Culprit Pool Tag

€”zm

Sistemin bu Dur hatasını vererek kilitlenmesini önlemek için, hata ayıklama oturumu izlenerek bulunan hatalı sürücüyü kapatın ve değiştirin.
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
314063  (http://support.microsoft.com/kb/314063/ ) Windows XP'de bir "Dur 0x0000000A" hatasında sorun giderme
Windows DDK'den daha fazla bilgi ve belge edinmek için, aşağıdaki MSDN Web sitelerini ziyaret edin:
Hata Denetimi 0xA: IRQL_NOT_LESS_OR_EQUAL
http://msdn2.microsoft.com/en-us/library/ms793589.aspx (http://msdn2.microsoft.com/en-us/library/ms793589.aspx)
IoQueueWorkItem
http://msdn.microsoft.com/library/en-us/Kernel_r/hh/Kernel_r/k104_6f5cb4e5-75d1-433a-864e-19de914aa2e7.xml.asp (http://msdn.microsoft.com/library/en-us/Kernel_r/hh/Kernel_r/k104_6f5cb4e5-75d1-433a-864e-19de914aa2e7.xml.asp)

Bu makaledeki bilginin uygulandigi durum:
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Driver Development Kit
Anahtar Kelimeler: 
kbhowto kbkmode kbddk KB818501
 

Makale çevirileri

 

Related Support Centers