Çözüldü Bilgisayar durduk yere mavi ekran verdi

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

Sleopp

Centipat
Katılım
11 Ekim 2023
Mesajlar
2
Daha fazla  
Cinsiyet
Erkek
Minidump Rapor Linki
https://drive.google.com/file/d/1NezBfh8IWO5F3Bler7Xoa8tVy2NbEYMf/view?usp=sharing
RAM
16gb
Ekran kartı
NVIDIA GeForce RTX 4060
Anakart
asus prime h610m-k
İşlemci
13th Gen Intel(R) Core(TM) i3-13100F 3.40 GHz
Bilgisayarı alalı 2 ay oldu, sorunsuz bir şekilde kullanıyordum fakat bir hafta önce ve az önce durduk yere mavi ekran verdi. Sebebi ve varsa çözümü nedir acaba?
 
Çö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: ffffffffc0000047, The exception code that was not handled
Arg2: fffff804e8030d0f, The address that the exception occurred at
Arg3: 0000000000000000, Parameter 0 of the exception
Arg4: 0000000000000000, Parameter 1 of the exception

Hatamız 0x1E, bir çekirdek modu programının hata işleyicinin yakalayamadığı bir istisna oluşturduğunu gösteriyor. Burda incelenebilecek şeyler, 2.parametrenin içeriği olmalıdır ama, bir istisna kodu dosyada yakalayabildiğim için onun üzerinden gideceğim.

Rich (BB code):
0: kd> .exr fffff8047a9b2dc0
ExceptionAddress: fffff804e8030d0f (nt!RtlRaiseStatus+0x000000000000004f)
   ExceptionCode: c0000047
  ExceptionFlags: 00000081
NumberParameters: 0

Hata kodu, daha önce denk geldiğim Windows semaforlarıyla alakalı bir hata kodu.

Rich (BB code):
Error code: (NTSTATUS) 0xc0000047 (3221225543) - Bir semafor, en yüksek sayım aşılacak biçimde serbest bırakılmaya çalışıldı.

Semafor, Daha çok işletim sistemlerinde, çoklu işlem veya çok kullanıcılı ortamlarda ortak bir kaynağa erişimi kontrol etmek için kullanılan bir değişken veya soyut bir veri yapısı olarak tanımlanmış. Bu, çok akla yatkın olmayan bir açıklama ama daha sadeleştirebiliriz.

Semaforu bir kaynak yönetim mekanizması olarak düşünebiliriz. Hatta, bir sayaç (counter) gibi düşünürsek en mantıklı şekilde kafamıza yatar, şöyle basitçe:
  • Bir object kullanılabilir olduğunda, sayaç arttırılır.
  • Object bir işlem tarafından kullanıldığında, sayaç azaltılır.
  • Sayaç sıfır olduğunda, Object tükenmiştir ve yeni gelen işlemler beklemeye alınır.
Bu niye anlatıldı, dosyandaki hata kodu buna değindiği için.

Rich (BB code):
0: kd> k
 # Child-SP          RetAddr               Call Site
00 fffff804`7a9b25c8 fffff804`e836e952     nt!KeBugCheckEx
01 fffff804`7a9b25d0 fffff804`e848248f     nt!KiFatalExceptionHandler+0x22
02 fffff804`7a9b2610 fffff804`e818fed2     nt!RtlpExecuteHandlerForException+0xf
03 fffff804`7a9b2640 fffff804`e8030d0f     nt!RtlDispatchException+0x2d2
04 fffff804`7a9b2da0 fffff804`e819a85f     nt!RtlRaiseStatus+0x4f // Sistemi durdurup 0xC0000047 error koduyla bir mavi ekran yükselt
05 fffff804`7a9b3340 fffff804`9a3d18d8     nt!KeReleaseSemaphore+0x18f // İlgili semaforu serbest bırak
06 fffff804`7a9b33a0 00000000`00000103     PXI_MOUSE+0x18d8 < Suçlu sürücü
07 fffff804`7a9b33a8 ffffab81`e363c490     0x103
08 fffff804`7a9b33b0 00000000`00000002     0xffffab81`e363c490
09 fffff804`7a9b33b8 fffff804`92be3a8f     0x2
0a fffff804`7a9b33c0 fffff804`e8062824     hidusb!HumReadCompletion+0x6f
0b fffff804`7a9b3420 fffff804`e8062333     nt!IopfCompleteRequest+0x4c4 // 2.kez tamamlanan rutin
0c fffff804`7a9b3560 fffff804`7a32bffe     nt!IofCompleteRequest+0x13 // Tamalanan rutin
0d (Inline Function) --------`--------     Wdf01000!FxIrp::CompleteRequest+0x13 // IofCompleteRequest'i çağırmak için kullanılan WDF işlevi [minkernel\wdf\framework\shared\inc\private\km\FxIrpKm.hpp @ 75]
0e fffff804`7a9b3590 fffff804`7a32b617     Wdf01000!FxRequest::CompleteInternal+0x13e [minkernel\wdf\framework\shared\core\fxrequest.cpp @ 869]
0f (Inline Function) --------`--------     Wdf01000!FxRequest::Complete+0x35 [minkernel\wdf\framework\shared\inc\private\common\FxRequest.hpp @ 803]
10 fffff804`7a9b3620 fffff804`9518dd6a     Wdf01000!imp_WdfRequestComplete+0xa7 [minkernel\wdf\framework\shared\core\fxrequestapi.cpp @ 436]
11 fffff804`7a9b36a0 fffff804`9518d6c0     USBXHCI!Bulk_ProcessTransferEventWithED1+0x68a
12 fffff804`7a9b3760 fffff804`951a01ee     USBXHCI!Bulk_EP_TransferEventHandler+0x10
13 fffff804`7a9b3790 fffff804`951a00a6     USBXHCI!Endpoint_TransferEventHandler+0x8e
14 fffff804`7a9b37f0 fffff804`951c81d0     USBXHCI!UsbDevice_TransferEventHandler+0x56
15 fffff804`7a9b3850 fffff804`951a54ae     USBXHCI!Interrupter_DeferredWorkProcessorWithVelocityFor48657796Disabled+0x57c
16 fffff804`7a9b3950 fffff804`951a541c     USBXHCI!Interrupter_DeferredWorkProcessor+0x7e
17 fffff804`7a9b3a50 fffff804`7a332341     USBXHCI!Interrupter_WdfEvtInterruptDpc+0xc
18 (Inline Function) --------`--------     Wdf01000!FxInterrupt::DpcHandler+0x69 [minkernel\wdf\framework\shared\irphandlers\pnp\km\interruptobjectkm.cpp @ 75]
19 fffff804`7a9b3a80 fffff804`e802bd4e     Wdf01000!FxInterrupt::_InterruptDpcThunk+0xb1 [minkernel\wdf\framework\shared\irphandlers\pnp\km\interruptobjectkm.cpp @ 405]
1a fffff804`7a9b3ad0 fffff804`e80b95db     nt!KiExecuteAllDpcs+0x67e
1b fffff804`7a9b3d20 fffff804`e8480c05     nt!KiRetireDpcList+0x36b
1c fffff804`7a9b3fb0 fffff804`e8480baf     nt!KxSwapStacksAndRetireDpcList+0x5
1d ffff868c`d972f9b0 fffff804`e800c9a5     nt!KiPlatformSwapStacksAndCallReturn
1e ffff868c`d972f9c0 fffff804`e84803db     nt!KiDispatchInterrupt+0x65
1f ffff868c`d972f9f0 fffff804`e847b074     nt!KiDpcInterruptBypass+0x1b
20 ffff868c`d972fa20 00007fff`882bd0a0     nt!KiInterruptDispatch+0x64
21 0000027e`eefef2a0 00000000`00000000     0x00007fff`882bd0a0

İlk olarak birUSB sürücüsü, IoCompleteRequest() işlevini çağırarak bir IRP'yi tamamlamaya çalışıyor, ancak bu IRP zaten daha önce başka bir sürücü (veya aynı sürücü) tarafından tamamlanmış durumda. Aynı IRP'nin iki kez tamamlanması sistemde bellek bozulması yaratacak bir durumdur. Ardından Hidusb API'ı ile bunu tamamlandığını görüyoruz,

2.olarak PXI_MOUSE sürücüsü,bir semaforu serbest bırakıyor, lakin dosyanda da görebildiğimiz gibi, KeReleaseSemaphore fonksiyonunda bir hata oluşmuş. Bunun tek sebebi olabilir ki o da sistemin bir semaforu serbest bırakırken en fazla izin verilen değeri aşmaya çalışmış olmasıdır. c0000047 hata kodumuz ve ardından gelen nt!RtlRaiseStatus işlevi bunu detaylıca gösteriyor.

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

Sürücünün neden bu hataya sebep olduğunu tam olarak inceleyemiyorum çünkü dosya yetersiz. Minidump'lar sadece işine yarayabilecek kadar küçük dökümlerdir. Detaylı analiz için yeterli değillerdir.

Rich (BB code):
0: kd> lmvm PXI_MOUSE
Browse full module list
start             end                 module name
fffff804`9a3d0000 fffff804`9a3de000   PXI_MOUSE T (no symbols)          
    Loaded symbol image file: PXI_MOUSE.sys
    Image path: PXI_MOUSE.sys
    Image name: PXI_MOUSE.sys
    Browse all global symbols  functions  data
    Timestamp:        Fri Jan  4 08:51:08 2019 (5C2EF44C)
    CheckSum:         00009DA5
    ImageSize:        0000E000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
    Information from resource tables:

Şunu söyleyeyim, Mouse için bir uygulama kullanıyorsun onun bir sürücüsü de olabileceği için ek uygulamaları kaldırabilirsin bilgisayardan. PXI_MOUSE, önyükleme sırasında yüklenen bir sürücü. Belki de bilgisayar açılırken bu hatayı alıyorsundur. (Dökümlerde bilgisayarın 1 gün, 7 gün açıkken falan bu hatayı aldığını görüyorum. Sadece tahmin.)

Rich (BB code):
0xfffff8047a9b2680 : 0xfffff8047a9b2bd8 : 0xfffff804e836e930 : nt!KiFatalExceptionHandler
0xfffff8047a9b2758 : 0xfffff804e8935189 : nt!ExAllocatePool2+0x99
0xfffff8047a9b27f8 : 0xfffff80492ba788f : usbccgp!DispatchPdoInternalDeviceControl+0x8f
0xfffff8047a9b2838 : 0xfffff804e806988e : nt!KeReleaseInStackQueuedSpinLock+0xe
0xfffff8047a9b2848 : 0xfffff80495243df3 : ucx01000!UrbHandler_USBPORTStyle_Legacy_BulkOrInterruptTransfer+0x1f3
0xfffff8047a9b2868 : 0xfffff80495243550 : ucx01000!Urb_LegacyTransferUrbCompletion
0xfffff8047a9b2948 : 0xfffff8049526c9c8 : ucx01000!WPP_RECORDER_INITIALIZED
0xfffff8047a9b2958 : 0xfffff80495244977 : ucx01000!RootHub_Pdo_EvtInternalDeviceControlIrpPreprocessCallback+0x117
0xfffff8047a9b2a48 : 0xfffff8047a335b8a : Wdf01000!FxDevice::DispatchWithLock+0x1da
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: ffffffffc0000047, The exception code that was not handled
Arg2: fffff804e8030d0f, The address that the exception occurred at
Arg3: 0000000000000000, Parameter 0 of the exception
Arg4: 0000000000000000, Parameter 1 of the exception

Hatamız 0x1E, bir çekirdek modu programının hata işleyicinin yakalayamadığı bir istisna oluşturduğunu gösteriyor. Burda incelenebilecek şeyler, 2.parametrenin içeriği olmalıdır ama, bir istisna kodu dosyada yakalayabildiğim için onun üzerinden gideceğim.

Rich (BB code):
0: kd> .exr fffff8047a9b2dc0
ExceptionAddress: fffff804e8030d0f (nt!RtlRaiseStatus+0x000000000000004f)
   ExceptionCode: c0000047
  ExceptionFlags: 00000081
NumberParameters: 0

Hata kodu, daha önce denk geldiğim Windows semaforlarıyla alakalı bir hata kodu.

Rich (BB code):
Error code: (NTSTATUS) 0xc0000047 (3221225543) - Bir semafor, en yüksek sayım aşılacak biçimde serbest bırakılmaya çalışıldı.

Semafor, Daha çok işletim sistemlerinde, çoklu işlem veya çok kullanıcılı ortamlarda ortak bir kaynağa erişimi kontrol etmek için kullanılan bir değişken veya soyut bir veri yapısı olarak tanımlanmış. Bu, çok akla yatkın olmayan bir açıklama ama daha sadeleştirebiliriz.

Semaforu bir kaynak yönetim mekanizması olarak düşünebiliriz. Hatta, bir sayaç (counter) gibi düşünürsek en mantıklı şekilde kafamıza yatar, şöyle basitçe:
  • Bir object kullanılabilir olduğunda, sayaç arttırılır.
  • Object bir işlem tarafından kullanıldığında, sayaç azaltılır.
  • Sayaç sıfır olduğunda, Object tükenmiştir ve yeni gelen işlemler beklemeye alınır.
Bu niye anlatıldı, dosyandaki hata kodu buna değindiği için.

Rich (BB code):
0: kd> k
 # Child-SP          RetAddr               Call Site
00 fffff804`7a9b25c8 fffff804`e836e952     nt!KeBugCheckEx
01 fffff804`7a9b25d0 fffff804`e848248f     nt!KiFatalExceptionHandler+0x22
02 fffff804`7a9b2610 fffff804`e818fed2     nt!RtlpExecuteHandlerForException+0xf
03 fffff804`7a9b2640 fffff804`e8030d0f     nt!RtlDispatchException+0x2d2
04 fffff804`7a9b2da0 fffff804`e819a85f     nt!RtlRaiseStatus+0x4f // Sistemi durdurup 0xC0000047 error koduyla bir mavi ekran yükselt
05 fffff804`7a9b3340 fffff804`9a3d18d8     nt!KeReleaseSemaphore+0x18f // İlgili semaforu serbest bırak
06 fffff804`7a9b33a0 00000000`00000103     PXI_MOUSE+0x18d8 < Suçlu sürücü
07 fffff804`7a9b33a8 ffffab81`e363c490     0x103
08 fffff804`7a9b33b0 00000000`00000002     0xffffab81`e363c490
09 fffff804`7a9b33b8 fffff804`92be3a8f     0x2
0a fffff804`7a9b33c0 fffff804`e8062824     hidusb!HumReadCompletion+0x6f
0b fffff804`7a9b3420 fffff804`e8062333     nt!IopfCompleteRequest+0x4c4 // 2.kez tamamlanan rutin
0c fffff804`7a9b3560 fffff804`7a32bffe     nt!IofCompleteRequest+0x13 // Tamalanan rutin
0d (Inline Function) --------`--------     Wdf01000!FxIrp::CompleteRequest+0x13 // IofCompleteRequest'i çağırmak için kullanılan WDF işlevi [minkernel\wdf\framework\shared\inc\private\km\FxIrpKm.hpp @ 75]
0e fffff804`7a9b3590 fffff804`7a32b617     Wdf01000!FxRequest::CompleteInternal+0x13e [minkernel\wdf\framework\shared\core\fxrequest.cpp @ 869]
0f (Inline Function) --------`--------     Wdf01000!FxRequest::Complete+0x35 [minkernel\wdf\framework\shared\inc\private\common\FxRequest.hpp @ 803]
10 fffff804`7a9b3620 fffff804`9518dd6a     Wdf01000!imp_WdfRequestComplete+0xa7 [minkernel\wdf\framework\shared\core\fxrequestapi.cpp @ 436]
11 fffff804`7a9b36a0 fffff804`9518d6c0     USBXHCI!Bulk_ProcessTransferEventWithED1+0x68a
12 fffff804`7a9b3760 fffff804`951a01ee     USBXHCI!Bulk_EP_TransferEventHandler+0x10
13 fffff804`7a9b3790 fffff804`951a00a6     USBXHCI!Endpoint_TransferEventHandler+0x8e
14 fffff804`7a9b37f0 fffff804`951c81d0     USBXHCI!UsbDevice_TransferEventHandler+0x56
15 fffff804`7a9b3850 fffff804`951a54ae     USBXHCI!Interrupter_DeferredWorkProcessorWithVelocityFor48657796Disabled+0x57c
16 fffff804`7a9b3950 fffff804`951a541c     USBXHCI!Interrupter_DeferredWorkProcessor+0x7e
17 fffff804`7a9b3a50 fffff804`7a332341     USBXHCI!Interrupter_WdfEvtInterruptDpc+0xc
18 (Inline Function) --------`--------     Wdf01000!FxInterrupt::DpcHandler+0x69 [minkernel\wdf\framework\shared\irphandlers\pnp\km\interruptobjectkm.cpp @ 75]
19 fffff804`7a9b3a80 fffff804`e802bd4e     Wdf01000!FxInterrupt::_InterruptDpcThunk+0xb1 [minkernel\wdf\framework\shared\irphandlers\pnp\km\interruptobjectkm.cpp @ 405]
1a fffff804`7a9b3ad0 fffff804`e80b95db     nt!KiExecuteAllDpcs+0x67e
1b fffff804`7a9b3d20 fffff804`e8480c05     nt!KiRetireDpcList+0x36b
1c fffff804`7a9b3fb0 fffff804`e8480baf     nt!KxSwapStacksAndRetireDpcList+0x5
1d ffff868c`d972f9b0 fffff804`e800c9a5     nt!KiPlatformSwapStacksAndCallReturn
1e ffff868c`d972f9c0 fffff804`e84803db     nt!KiDispatchInterrupt+0x65
1f ffff868c`d972f9f0 fffff804`e847b074     nt!KiDpcInterruptBypass+0x1b
20 ffff868c`d972fa20 00007fff`882bd0a0     nt!KiInterruptDispatch+0x64
21 0000027e`eefef2a0 00000000`00000000     0x00007fff`882bd0a0

İlk olarak birUSB sürücüsü, IoCompleteRequest() işlevini çağırarak bir IRP'yi tamamlamaya çalışıyor, ancak bu IRP zaten daha önce başka bir sürücü (veya aynı sürücü) tarafından tamamlanmış durumda. Aynı IRP'nin iki kez tamamlanması sistemde bellek bozulması yaratacak bir durumdur. Ardından Hidusb API'ı ile bunu tamamlandığını görüyoruz,

2.olarak PXI_MOUSE sürücüsü,bir semaforu serbest bırakıyor, lakin dosyanda da görebildiğimiz gibi, KeReleaseSemaphore fonksiyonunda bir hata oluşmuş. Bunun tek sebebi olabilir ki o da sistemin bir semaforu serbest bırakırken en fazla izin verilen değeri aşmaya çalışmış olmasıdır. c0000047 hata kodumuz ve ardından gelen nt!RtlRaiseStatus işlevi bunu detaylıca gösteriyor.

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

Sürücünün neden bu hataya sebep olduğunu tam olarak inceleyemiyorum çünkü dosya yetersiz. Minidump'lar sadece işine yarayabilecek kadar küçük dökümlerdir. Detaylı analiz için yeterli değillerdir.

Rich (BB code):
0: kd> lmvm PXI_MOUSE
Browse full module list
start             end                 module name
fffff804`9a3d0000 fffff804`9a3de000   PXI_MOUSE T (no symbols)          
    Loaded symbol image file: PXI_MOUSE.sys
    Image path: PXI_MOUSE.sys
    Image name: PXI_MOUSE.sys
    Browse all global symbols  functions  data
    Timestamp:        Fri Jan  4 08:51:08 2019 (5C2EF44C)
    CheckSum:         00009DA5
    ImageSize:        0000E000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
    Information from resource tables:

Şunu söyleyeyim, Mouse için bir uygulama kullanıyorsun onun bir sürücüsü de olabileceği için ek uygulamaları kaldırabilirsin bilgisayardan. PXI_MOUSE, önyükleme sırasında yüklenen bir sürücü. Belki de bilgisayar açılırken bu hatayı alıyorsundur. (Dökümlerde bilgisayarın 1 gün, 7 gün açıkken falan bu hatayı aldığını görüyorum. Sadece tahmin.)

Rich (BB code):
0xfffff8047a9b2680 : 0xfffff8047a9b2bd8 : 0xfffff804e836e930 : nt!KiFatalExceptionHandler
0xfffff8047a9b2758 : 0xfffff804e8935189 : nt!ExAllocatePool2+0x99
0xfffff8047a9b27f8 : 0xfffff80492ba788f : usbccgp!DispatchPdoInternalDeviceControl+0x8f
0xfffff8047a9b2838 : 0xfffff804e806988e : nt!KeReleaseInStackQueuedSpinLock+0xe
0xfffff8047a9b2848 : 0xfffff80495243df3 : ucx01000!UrbHandler_USBPORTStyle_Legacy_BulkOrInterruptTransfer+0x1f3
0xfffff8047a9b2868 : 0xfffff80495243550 : ucx01000!Urb_LegacyTransferUrbCompletion
0xfffff8047a9b2948 : 0xfffff8049526c9c8 : ucx01000!WPP_RECORDER_INITIALIZED
0xfffff8047a9b2958 : 0xfffff80495244977 : ucx01000!RootHub_Pdo_EvtInternalDeviceControlIrpPreprocessCallback+0x117
0xfffff8047a9b2a48 : 0xfffff8047a335b8a : Wdf01000!FxDevice::DispatchWithLock+0x1da
 
Çö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: ffffffffc0000047, The exception code that was not handled.
Arg2: fffff804e8030d0f, The address that the exception occurred at.
Arg3: 0000000000000000, Parameter 0 of the exception.
Arg4: 0000000000000000, Parameter 1 of the exception.

Hatamız 0x1E, bir çekirdek modu programının hata işleyicinin yakalayamadığı bir istisna oluşturduğunu gösteriyor. Burada incelenebilecek şeyler, 2.parametrenin içeriği olmalıdır ama, bir istisna kodu dosyada yakalayabildiğim için onun üzerinden gideceğim.

Rich (BB code):
0: kd> .exr fffff8047a9b2dc0.
ExceptionAddress: fffff804e8030d0f (nt!RtlRaiseStatus+0x000000000000004f)
 ExceptionCode: c0000047
 ExceptionFlags: 00000081.
NumberParameters: 0

Hata kodu, daha önce denk geldiğim Windows semaforlarıyla alakalı bir hata kodu.

Rich (BB code):
Error code: (NTSTATUS) 0xc0000047 (3221225543) - Bir semafor, en yüksek sayım aşılacak biçimde serbest bırakılmaya çalışıldı.

Semafor, daha çok işletim sistemlerinde, çoklu işlem veya çok kullanıcılı ortamlarda ortak bir kaynağa erişimi kontrol etmek için kullanılan bir değişken veya soyut bir veri yapısı olarak tanımlanmış. Bu, çok akla yatkın olmayan bir açıklama ama daha sadeleştirebiliriz.

Semaforu bir kaynak yönetim mekanizması olarak düşünebiliriz. Hatta, bir sayaç (counter) gibi düşünürsek en mantıklı şekilde kafamıza yatar, şöyle basitçe:
  • Bir object kullanılabilir olduğunda, sayaç arttırılır.
  • Object bir işlem tarafından kullanıldığında, sayaç azaltılır.
  • Sayaç sıfır olduğunda, object tükenmiştir ve yeni gelen işlemler beklemeye alınır.
Bu niye anlatıldı, dosyandaki hata kodu buna değindiği için.

Rich (BB code):
0: kd> k
 # Child-SP RetAddr Call Site.
00 fffff804`7a9b25c8 fffff804`e836e952 nt!KeBugCheckEx
01 fffff804`7a9b25d0 fffff804`e848248f nt!KiFatalExceptionHandler+0x22
02 fffff804`7a9b2610 fffff804`e818fed2 nt!RtlpExecuteHandlerForException+0xf
03 fffff804`7a9b2640 fffff804`e8030d0f nt!RtlDispatchException+0x2d2
04 fffff804`7a9b2da0 fffff804`e819a85f nt!RtlRaiseStatus+0x4f // Sistemi durdurup 0xC0000047 error koduyla bir mavi ekran yükselt
05 fffff804`7a9b3340 fffff804`9a3d18d8 nt!KeReleaseSemaphore+0x18f // İlgili semaforu serbest bırak
06 fffff804`7a9b33a0 00000000`00000103 PXI_MOUSE+0x18d8 < Suçlu sürücü
07 fffff804`7a9b33a8 ffffab81`e363c490 0x103.
08 fffff804`7a9b33b0 00000000`00000002 0xffffab81`e363c490
09 fffff804`7a9b33b8 fffff804`92be3a8f 0x2.
0a fffff804`7a9b33c0 fffff804`e8062824 hidusb!HumReadCompletion+0x6f
0b fffff804`7a9b3420 fffff804`e8062333 nt!IopfCompleteRequest+0x4c4 // 2.kez tamamlanan rutin
0c fffff804`7a9b3560 fffff804`7a32bffe nt!IofCompleteRequest+0x13 // Tamalanan rutin
0d (Inline Function) --------`-------- Wdf01000!FxIrp::CompleteRequest+0x13 // IofCompleteRequest'i çağırmak için kullanılan WDF işlevi [minkernel\wdf\framework\shared\inc\private\km\FxIrpKm.hpp @ 75]
0e fffff804`7a9b3590 fffff804`7a32b617 Wdf01000!FxRequest::CompleteInternal+0x13e [minkernel\wdf\framework\shared\core\fxrequest.cpp @ 869]
0f (Inline Function) --------`-------- Wdf01000!FxRequest::Complete+0x35 [minkernel\wdf\framework\shared\inc\private\common\FxRequest.hpp @ 803]
10 fffff804`7a9b3620 fffff804`9518dd6a Wdf01000!imp_WdfRequestComplete+0xa7 [minkernel\wdf\framework\shared\core\fxrequestapi.cpp @ 436]
11 fffff804`7a9b36a0 fffff804`9518d6c0 USBXHCI!Bulk_ProcessTransferEventWithED1+0x68a
12 fffff804`7a9b3760 fffff804`951a01ee USBXHCI!Bulk_EP_TransferEventHandler+0x10
13 fffff804`7a9b3790 fffff804`951a00a6 USBXHCI!Endpoint_TransferEventHandler+0x8e
14 fffff804`7a9b37f0 fffff804`951c81d0 USBXHCI!UsbDevice_TransferEventHandler+0x56
15 fffff804`7a9b3850 fffff804`951a54ae USBXHCI!Interrupter_DeferredWorkProcessorWithVelocityFor48657796Disabled+0x57c
16 fffff804`7a9b3950 fffff804`951a541c USBXHCI!Interrupter_DeferredWorkProcessor+0x7e
17 fffff804`7a9b3a50 fffff804`7a332341 USBXHCI!Interrupter_WdfEvtInterruptDpc+0xc
18 (Inline Function) --------`-------- Wdf01000!FxInterrupt::DpcHandler+0x69 [minkernel\wdf\framework\shared\irphandlers\pnp\km\interruptobjectkm.cpp @ 75]
19 fffff804`7a9b3a80 fffff804`e802bd4e Wdf01000!FxInterrupt::_InterruptDpcThunk+0xb1 [minkernel\wdf\framework\shared\irphandlers\pnp\km\interruptobjectkm.cpp @ 405]
1a fffff804`7a9b3ad0 fffff804`e80b95db nt!KiExecuteAllDpcs+0x67e
1b fffff804`7a9b3d20 fffff804`e8480c05 nt!KiRetireDpcList+0x36b
1c fffff804`7a9b3fb0 fffff804`e8480baf nt!KxSwapStacksAndRetireDpcList+0x5
1d ffff868c`d972f9b0 fffff804`e800c9a5 nt!KiPlatformSwapStacksAndCallReturn
1e ffff868c`d972f9c0 fffff804`e84803db nt!KiDispatchInterrupt+0x65
1f ffff868c`d972f9f0 fffff804`e847b074 nt!KiDpcInterruptBypass+0x1b
20 ffff868c`d972fa20 00007fff`882bd0a0 nt!KiInterruptDispatch+0x64
21 0000027e`eefef2a0 00000000`00000000 0x00007fff`882bd0a0

İlk olarak birusb sürücüsü, IoCompleteRequest() işlevini çağırarak bir ırp'yi tamamlamaya çalışıyor, ancak bu ırp zaten daha önce başka bir sürücü (veya aynı sürücü) tarafından tamamlanmış durumda. Aynı ırp'nin iki kez tamamlanması sistemde bellek bozulması yaratacak bir durumdur. Ardından hidusb API'ı ile bunu tamamlandığını görüyoruz,

2.olarak pxı_mouse sürücüsü, bir semaforu serbest bırakıyor, lakin dosyanda da görebildiğimiz gibi, KeReleaseSemaphore fonksiyonunda bir hata oluşmuş. Bunun tek sebebi olabilir ki o da sistemin bir semaforu serbest bırakırken en fazla izin verilen değeri aşmaya çalışmış olmasıdır. C0000047 hata kodumuz ve ardından gelen NT! Rtlraisestatus işlevi bunu detaylıca gösteriyor.

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

Sürücünün neden bu hataya sebep olduğunu tam olarak inceleyemiyorum çünkü dosya yetersiz. Minidump'lar sadece işine yarayabilecek kadar küçük dökümlerdir. Detaylı analiz için yeterli değillerdir.

Rich (BB code):
0: kd> lmvm PXI_MOUSE.
Browse full module list.
start end module name.
fffff804`9a3d0000 fffff804`9a3de000 PXI_MOUSE T (no symbols)
 Loaded symbol image file: PXI_MOUSE.sys
 Image path: PXI_MOUSE.sys
 Image name: PXI_MOUSE.sys
 Browse all global symbols functions data.
 Timestamp: Fri Jan 4 08:51:08 2019 (5C2EF44C)
 CheckSum: 00009DA5.
 ImageSize: 0000E000.
 Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4
 Information from resource tables:

Şunu söyleyeyim, mouse için bir uygulama kullanıyorsun onun bir sürücüsü de olabileceği için ek uygulamaları kaldırabilirsin bilgisayardan. PXI_MOUSE, önyükleme sırasında yüklenen bir sürücü. Belki de bilgisayar açılırken bu hatayı alıyorsundur. (dökümlerde bilgisayarın 1 gün, 7 gün açıkken falan bu hatayı aldığını görüyorum. Sadece tahmin.)

Rich (BB code):
0xfffff8047a9b2680 : 0xfffff8047a9b2bd8 : 0xfffff804e836e930 : nt!KiFatalExceptionHandler
0xfffff8047a9b2758 : 0xfffff804e8935189 : nt!ExAllocatePool2+0x99
0xfffff8047a9b27f8 : 0xfffff80492ba788f : usbccgp!DispatchPdoInternalDeviceControl+0x8f
0xfffff8047a9b2838 : 0xfffff804e806988e : nt!KeReleaseInStackQueuedSpinLock+0xe
0xfffff8047a9b2848 : 0xfffff80495243df3 : ucx01000!UrbHandler_USBPORTStyle_Legacy_BulkOrInterruptTransfer+0x1f3
0xfffff8047a9b2868 : 0xfffff80495243550 : ucx01000!Urb_LegacyTransferUrbCompletion
0xfffff8047a9b2948 : 0xfffff8049526c9c8 : ucx01000!WPP_RECORDER_INITIALIZED
0xfffff8047a9b2958 : 0xfffff80495244977 : ucx01000!RootHub_Pdo_EvtInternalDeviceControlIrpPreprocessCallback+0x117
0xfffff8047a9b2a48 : 0xfffff8047a335b8a : Wdf01000!FxDevice::DispatchWithLock+0x1da

Evet, farenin makro, DPI gibi özellikleri ayarlayabildiğim uygulaması vardı, sildim. Birkaç gün bilgisayar aynı mavi ekranı verecek mi diye bekleyeceğim. Eğer mavi ekran vermezse çözüldü olarak işaretleyeceğim. Teşekkürler.
 
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: ffffffffc0000047, The exception code that was not handled
Arg2: fffff804e8030d0f, The address that the exception occurred at
Arg3: 0000000000000000, Parameter 0 of the exception
Arg4: 0000000000000000, Parameter 1 of the exception

Hatamız 0x1E, bir çekirdek modu programının hata işleyicinin yakalayamadığı bir istisna oluşturduğunu gösteriyor. Burda incelenebilecek şeyler, 2.parametrenin içeriği olmalıdır ama, bir istisna kodu dosyada yakalayabildiğim için onun üzerinden gideceğim.

Rich (BB code):
0: kd> .exr fffff8047a9b2dc0
ExceptionAddress: fffff804e8030d0f (nt!RtlRaiseStatus+0x000000000000004f)
   ExceptionCode: c0000047
  ExceptionFlags: 00000081
NumberParameters: 0

Hata kodu, daha önce denk geldiğim Windows semaforlarıyla alakalı bir hata kodu.

Rich (BB code):
Error code: (NTSTATUS) 0xc0000047 (3221225543) - Bir semafor, en yüksek sayım aşılacak biçimde serbest bırakılmaya çalışıldı.

Semafor, Daha çok işletim sistemlerinde, çoklu işlem veya çok kullanıcılı ortamlarda ortak bir kaynağa erişimi kontrol etmek için kullanılan bir değişken veya soyut bir veri yapısı olarak tanımlanmış. Bu, çok akla yatkın olmayan bir açıklama ama daha sadeleştirebiliriz.

Semaforu bir kaynak yönetim mekanizması olarak düşünebiliriz. Hatta, bir sayaç (counter) gibi düşünürsek en mantıklı şekilde kafamıza yatar, şöyle basitçe:
  • Bir object kullanılabilir olduğunda, sayaç arttırılır.
  • Object bir işlem tarafından kullanıldığında, sayaç azaltılır.
  • Sayaç sıfır olduğunda, Object tükenmiştir ve yeni gelen işlemler beklemeye alınır.
Bu niye anlatıldı, dosyandaki hata kodu buna değindiği için.

Rich (BB code):
0: kd> k
 # Child-SP          RetAddr               Call Site
00 fffff804`7a9b25c8 fffff804`e836e952     nt!KeBugCheckEx
01 fffff804`7a9b25d0 fffff804`e848248f     nt!KiFatalExceptionHandler+0x22
02 fffff804`7a9b2610 fffff804`e818fed2     nt!RtlpExecuteHandlerForException+0xf
03 fffff804`7a9b2640 fffff804`e8030d0f     nt!RtlDispatchException+0x2d2
04 fffff804`7a9b2da0 fffff804`e819a85f     nt!RtlRaiseStatus+0x4f // Sistemi durdurup 0xC0000047 error koduyla bir mavi ekran yükselt
05 fffff804`7a9b3340 fffff804`9a3d18d8     nt!KeReleaseSemaphore+0x18f // İlgili semaforu serbest bırak
06 fffff804`7a9b33a0 00000000`00000103     PXI_MOUSE+0x18d8 < Suçlu sürücü
07 fffff804`7a9b33a8 ffffab81`e363c490     0x103
08 fffff804`7a9b33b0 00000000`00000002     0xffffab81`e363c490
09 fffff804`7a9b33b8 fffff804`92be3a8f     0x2
0a fffff804`7a9b33c0 fffff804`e8062824     hidusb!HumReadCompletion+0x6f
0b fffff804`7a9b3420 fffff804`e8062333     nt!IopfCompleteRequest+0x4c4 // 2.kez tamamlanan rutin
0c fffff804`7a9b3560 fffff804`7a32bffe     nt!IofCompleteRequest+0x13 // Tamalanan rutin
0d (Inline Function) --------`--------     Wdf01000!FxIrp::CompleteRequest+0x13 // IofCompleteRequest'i çağırmak için kullanılan WDF işlevi [minkernel\wdf\framework\shared\inc\private\km\FxIrpKm.hpp @ 75]
0e fffff804`7a9b3590 fffff804`7a32b617     Wdf01000!FxRequest::CompleteInternal+0x13e [minkernel\wdf\framework\shared\core\fxrequest.cpp @ 869]
0f (Inline Function) --------`--------     Wdf01000!FxRequest::Complete+0x35 [minkernel\wdf\framework\shared\inc\private\common\FxRequest.hpp @ 803]
10 fffff804`7a9b3620 fffff804`9518dd6a     Wdf01000!imp_WdfRequestComplete+0xa7 [minkernel\wdf\framework\shared\core\fxrequestapi.cpp @ 436]
11 fffff804`7a9b36a0 fffff804`9518d6c0     USBXHCI!Bulk_ProcessTransferEventWithED1+0x68a
12 fffff804`7a9b3760 fffff804`951a01ee     USBXHCI!Bulk_EP_TransferEventHandler+0x10
13 fffff804`7a9b3790 fffff804`951a00a6     USBXHCI!Endpoint_TransferEventHandler+0x8e
14 fffff804`7a9b37f0 fffff804`951c81d0     USBXHCI!UsbDevice_TransferEventHandler+0x56
15 fffff804`7a9b3850 fffff804`951a54ae     USBXHCI!Interrupter_DeferredWorkProcessorWithVelocityFor48657796Disabled+0x57c
16 fffff804`7a9b3950 fffff804`951a541c     USBXHCI!Interrupter_DeferredWorkProcessor+0x7e
17 fffff804`7a9b3a50 fffff804`7a332341     USBXHCI!Interrupter_WdfEvtInterruptDpc+0xc
18 (Inline Function) --------`--------     Wdf01000!FxInterrupt::DpcHandler+0x69 [minkernel\wdf\framework\shared\irphandlers\pnp\km\interruptobjectkm.cpp @ 75]
19 fffff804`7a9b3a80 fffff804`e802bd4e     Wdf01000!FxInterrupt::_InterruptDpcThunk+0xb1 [minkernel\wdf\framework\shared\irphandlers\pnp\km\interruptobjectkm.cpp @ 405]
1a fffff804`7a9b3ad0 fffff804`e80b95db     nt!KiExecuteAllDpcs+0x67e
1b fffff804`7a9b3d20 fffff804`e8480c05     nt!KiRetireDpcList+0x36b
1c fffff804`7a9b3fb0 fffff804`e8480baf     nt!KxSwapStacksAndRetireDpcList+0x5
1d ffff868c`d972f9b0 fffff804`e800c9a5     nt!KiPlatformSwapStacksAndCallReturn
1e ffff868c`d972f9c0 fffff804`e84803db     nt!KiDispatchInterrupt+0x65
1f ffff868c`d972f9f0 fffff804`e847b074     nt!KiDpcInterruptBypass+0x1b
20 ffff868c`d972fa20 00007fff`882bd0a0     nt!KiInterruptDispatch+0x64
21 0000027e`eefef2a0 00000000`00000000     0x00007fff`882bd0a0

İlk olarak birUSB sürücüsü, IoCompleteRequest() işlevini çağırarak bir IRP'yi tamamlamaya çalışıyor, ancak bu IRP zaten daha önce başka bir sürücü (veya aynı sürücü) tarafından tamamlanmış durumda. Aynı IRP'nin iki kez tamamlanması sistemde bellek bozulması yaratacak bir durumdur. Ardından Hidusb API'ı ile bunu tamamlandığını görüyoruz,

2.olarak PXI_MOUSE sürücüsü,bir semaforu serbest bırakıyor, lakin dosyanda da görebildiğimiz gibi, KeReleaseSemaphore fonksiyonunda bir hata oluşmuş. Bunun tek sebebi olabilir ki o da sistemin bir semaforu serbest bırakırken en fazla izin verilen değeri aşmaya çalışmış olmasıdır. c0000047 hata kodumuz ve ardından gelen nt!RtlRaiseStatus işlevi bunu detaylıca gösteriyor.

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

Sürücünün neden bu hataya sebep olduğunu tam olarak inceleyemiyorum çünkü dosya yetersiz. Minidump'lar sadece işine yarayabilecek kadar küçük dökümlerdir. Detaylı analiz için yeterli değillerdir.

Rich (BB code):
0: kd> lmvm PXI_MOUSE
Browse full module list
start             end                 module name
fffff804`9a3d0000 fffff804`9a3de000   PXI_MOUSE T (no symbols)         
    Loaded symbol image file: PXI_MOUSE.sys
    Image path: PXI_MOUSE.sys
    Image name: PXI_MOUSE.sys
    Browse all global symbols  functions  data
    Timestamp:        Fri Jan  4 08:51:08 2019 (5C2EF44C)
    CheckSum:         00009DA5
    ImageSize:        0000E000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
    Information from resource tables:

Şunu söyleyeyim, Mouse için bir uygulama kullanıyorsun onun bir sürücüsü de olabileceği için ek uygulamaları kaldırabilirsin bilgisayardan. PXI_MOUSE, önyükleme sırasında yüklenen bir sürücü. Belki de bilgisayar açılırken bu hatayı alıyorsundur. (Dökümlerde bilgisayarın 1 gün, 7 gün açıkken falan bu hatayı aldığını görüyorum. Sadece tahmin.)

Rich (BB code):
0xfffff8047a9b2680 : 0xfffff8047a9b2bd8 : 0xfffff804e836e930 : nt!KiFatalExceptionHandler
0xfffff8047a9b2758 : 0xfffff804e8935189 : nt!ExAllocatePool2+0x99
0xfffff8047a9b27f8 : 0xfffff80492ba788f : usbccgp!DispatchPdoInternalDeviceControl+0x8f
0xfffff8047a9b2838 : 0xfffff804e806988e : nt!KeReleaseInStackQueuedSpinLock+0xe
0xfffff8047a9b2848 : 0xfffff80495243df3 : ucx01000!UrbHandler_USBPORTStyle_Legacy_BulkOrInterruptTransfer+0x1f3
0xfffff8047a9b2868 : 0xfffff80495243550 : ucx01000!Urb_LegacyTransferUrbCompletion
0xfffff8047a9b2948 : 0xfffff8049526c9c8 : ucx01000!WPP_RECORDER_INITIALIZED
0xfffff8047a9b2958 : 0xfffff80495244977 : ucx01000!RootHub_Pdo_EvtInternalDeviceControlIrpPreprocessCallback+0x117
0xfffff8047a9b2a48 : 0xfffff8047a335b8a : Wdf01000!FxDevice::DispatchWithLock+0x1da
Hocam uzun zamandır yoktunuz hoşgeldiniz :D
 
Geri
Yukarı