Anasayfa Makale Çözüm: Driver Power State Failure Mavi Ekran Hatası

Çözüm: Driver Power State Failure Mavi Ekran Hatası

Bu rehberimizde adım adım Driver Power State Failure mavi ekran hatasını çözüyoruz.

Daha önce sizlerle temel mavi ekran analizini nasıl yapacağımıza bakmıştık. Bu rehberimizde ise biraz daha derine iniyoruz ve Driver Power State Failure mavi ekran hatasıan sebep olan sürücüyü tespit ediyoruz.

Mavi ekran hataları her ne kadar genelde donanımsal olsa da hatalı veya güncel Windows 10 sürümleriyle uyumsuz eski sürücülerden de kaynaklanabiliyor. Bu rehberimizde de benzer bir durum söz konusu. Sorunu tespit etmek için ilk olarak paylaşılan Minidump dosyalarını indiriyoruz. İnen dosyaları WinDbg Preview ile açıyoruz ve analyze-v diyerek analize başlıyoruz.

Çıkan ilk sonuca bakacak olursak kesin bir sürücü tespit etmek mümkün değil ancak sorunun Stream.sys ile ilintili olduğu anlaşılabiliyor:

DRIVER_POWER_STATE_FAILURE (9f)
A driver has failed to complete a power IRP within a specific time.
Arguments:
Arg1: 0000000000000003, A device object has been blocking an Irp for too long a time
Arg2: ffffbd0f618aa570, Physical Device Object of the stack
Arg3: fffff80367fe87b0, nt!TRIAGE_9F_POWER on Win7 and higher, otherwise the Functional Device Object of the stack
Arg4: ffffbd0f695e19e0, The blocked IRP

Debugging Details:
------------------

Implicit thread is now ffffbd0f`671ef040
*** WARNING: Unable to verify timestamp for win32k.sys

KEY_VALUES_STRING: 1

    Key  : Analysis.CPU.mSec
    Value: 2968

    Key  : Analysis.DebugAnalysisProvider.CPP
    Value: Create: 8007007e on DESKTOP-1IBQR0U

    Key  : Analysis.DebugData
    Value: CreateObject

    Key  : Analysis.DebugModel
    Value: CreateObject

    Key  : Analysis.Elapsed.mSec
    Value: 12698

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 76

    Key  : Analysis.System
    Value: CreateObject

    Key  : WER.OS.Branch
    Value: 19h1_release

    Key  : WER.OS.Timestamp
    Value: 2019-03-18T12:02:00Z

    Key  : WER.OS.Version
    Value: 10.0.18362.1


ADDITIONAL_XML: 1

OS_BUILD_LAYERS: 1

BUGCHECK_CODE:  9f

BUGCHECK_P1: 3

BUGCHECK_P2: ffffbd0f618aa570

BUGCHECK_P3: fffff80367fe87b0

BUGCHECK_P4: ffffbd0f695e19e0

DRVPOWERSTATE_SUBCODE:  3

FAULTING_THREAD:  ffffbd0f671ef040

BLACKBOXBSD: 1 (!blackboxbsd)


BLACKBOXNTFS: 1 (!blackboxntfs)


BLACKBOXPNP: 1 (!blackboxpnp)


BLACKBOXWINLOGON: 1

CUSTOMER_CRASH_COUNT:  1

PROCESS_NAME:  System

STACK_TEXT:  
fffffc03`dd0c7540 fffff803`6211507d     : ffffe080`00000001 00000000`00000009 ffffe080`ffffffff 00000000`00000002 : nt!KiSwapContext+0x76
fffffc03`dd0c7680 fffff803`62113f04     : ffffbd0f`671ef040 00000000`00000000 ffff121e`511c7353 00000000`00000000 : nt!KiSwapThread+0xbfd
fffffc03`dd0c7720 fffff803`621136a5     : ffffbd0f`5fbbd060 fffffc03`00000000 00000000`00000000 00000000`00000000 : nt!KiCommitThreadWait+0x144
fffffc03`dd0c77c0 fffff803`7cf73920     : ffffbd0f`5fbbd4a0 00000000`00000000 ffffbd0f`695e1900 ffffbd0f`5fbbd000 : nt!KeWaitForSingleObject+0x255
fffffc03`dd0c78a0 fffff803`621739ce     : ffffbd0f`695e19e0 ffffbd0f`695e19e0 fffffc03`dd0c7a20 ffffbd0f`695e1f30 : STREAM!StreamClassPower+0x4c0
fffffc03`dd0c7930 fffff803`6210a940     : 00000000`00000008 fffffc03`dd0c7950 00000000`00000008 fffffc03`dd0c7990 : nt!IopPoHandleIrp+0x36
fffffc03`dd0c7960 fffff803`62175ef9     : 00680074`0073006b 0000006b`006e0075 00000000`00000000 00000000`00000000 : nt!IofCallDriver+0x70
fffffc03`dd0c79a0 fffff803`7bd616cd     : fffff803`6243ad00 fffff803`62111c32 ffffbd0f`532bd000 00000000`00000000 : nt!IoCallDriver+0x9
fffffc03`dd0c79d0 fffff803`7bd61023     : ffffbd0f`5ffc5c40 00000000`00000000 ffffbd0f`00000000 ffffbd0f`695e19e0 : ksthunk!CKernelFilterDevice::DispatchIrp+0x249
fffffc03`dd0c7a30 fffff803`6217a04f     : fffff803`62444fe0 00000000`00000000 ffffbd0f`61a1cc00 ffffbd0f`532bd000 : ksthunk!CKernelFilterDevice::DispatchIrpBridge+0x13
fffffc03`dd0c7a60 fffff803`6206bcd5     : ffffffff`fa0a1f00 ffffbd0f`671ef040 fffff803`62179e70 00000000`00000001 : nt!PopIrpWorker+0x1df
fffffc03`dd0c7b10 fffff803`621c9998     : fffff803`5f50f180 ffffbd0f`671ef040 fffff803`6206bc80 00000000`00000246 : nt!PspSystemThreadStartup+0x55
fffffc03`dd0c7b60 00000000`00000000     : fffffc03`dd0c8000 fffffc03`dd0c1000 00000000`00000000 00000000`00000000 : nt!KiStartSystemThread+0x28


STACK_COMMAND:  .thread 0xffffbd0f671ef040 ; kb

SYMBOL_NAME:  STREAM!StreamClassPower+4c0

MODULE_NAME: STREAM

IMAGE_NAME:  STREAM.SYS

IMAGE_VERSION:  10.0.18362.904

BUCKET_ID_FUNC_OFFSET:  4c0

FAILURE_BUCKET_ID:  0x9F_3_POWER_DOWN_STREAM!StreamClassPower

OS_VERSION:  10.0.18362.1

BUILDLAB_STR:  19h1_release

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

FAILURE_ID_HASH:  {1fec1f1e-3925-0f73-ea47-7fb4c6525f16}

Followup:     MachineOwner
---------

Bu aşamada Stream hakkında daha da fazla bilgi edinmek için üstüne tıklayabiliriz:

Browse full module list
start             end                 module name
fffff803`7cf70000 fffff803`7cf8c000   STREAM   # (pdb symbols)          C:\ProgramData\Dbg\sym\stream.pdb\E7568AE2DAC2E2120D05008A22ADD4681\stream.pdb
    Loaded symbol image file: STREAM.SYS
    Mapped memory image file: C:\ProgramData\Dbg\sym\STREAM.SYS\5BD8D9831c000\STREAM.SYS
    Image path: \SystemRoot\system32\DRIVERS\STREAM.SYS
    Image name: STREAM.SYS
    Browse all global symbols  functions  data
    Image was built with /Brepro flag.
    Timestamp:        5BD8D983 (This is a reproducible build file hash, not a timestamp)
    CheckSum:         00019079
    ImageSize:        0001C000
    File version:     10.0.18362.904
    Product version:  10.0.18362.904
    File flags:       0 (Mask 3F)
    File OS:          40004 NT Win32
    File type:        3.7 Driver
    File date:        00000000.00000000
    Translations:     0000.04b0
    Information from resource tables:
        CompanyName:      Microsoft Corporation
        ProductName:      Microsoft® Windows® Operating System
        InternalName:     stream.sys
        OriginalFilename: stream.sys
        ProductVersion:   10.0.18362.904
        FileVersion:      10.0.18362.904 (WinBuild.160101.0800)
        FileDescription:  WDM CODEC Class Device Driver 2.0
        LegalCopyright:   © Microsoft Corporation. All rights reserved.

Sonuç olarak bunun WDM CODEC Class Device Driver 2.0 olduğunu öğreniyoruz. Yani bu bir video kodlama sürücüsü. Lakin bu sürücünün sorun çıkarma ihtimali düşük zira Windows güncel ve mavi ekran hataları da genelde Windows’un kendi sürücülerinden kaynaklanmıyor. Bu bağlamda daha derin analiz için Microsoft’un DRIVER_POWER_STATE_FAILURE makalesine göz atıyoruz. Makalede bu sorunun birden fazla türevi olduğundan bashedilmekte. Bizim yaşadığımız sürümü ise nt!TRIAGE_9F_POWER olarak geçiyor. Bununla ilintili olarak bir de bloke edilmiş Interrupt Request Package, yani IRP komutu mevcut. Bu IRP komutu mavi ekrana sebep olabiliyor. Bu bağlamda söz konusu bloke edilen komut hakkında daha fazla bilgi edinmek için Minidump dosyasındaki Arg4 ile birlikte !irp komutunu giriyoruz: !irp ffffbd0f695e19e0

Nihayet detaylı bilgi edinebiliyoruz:

Irp is active with 18 stacks 16 is current (= 0xffffbd0f695e1ee8)
 No Mdl: No System Buffer: Thread 00000000:  Irp stack trace.  
     cmd  flg cl Device   File     Completion-Context
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000    

			Args: 00000000 00000000 00000000 00000000
>[IRP_MJ_POWER(16), IRP_MN_SET_POWER(2)]
            0  0 ffffbd0f5fbbd060 00000000 00000000-00000000    
	      Unable to load image \SystemRoot\system32\DRIVERS\VX1000.sys, Win32 error 0n2
*** WARNING: Unable to verify timestamp for VX1000.sys
 \Driver\VX1000
			Args: 00015600 00000000 00000005 00000003
 [IRP_MJ_POWER(16), IRP_MN_SET_POWER(2)]
            0 e1 ffffbd0f5ffc5c40 00000000 fffff8036259d130-ffffbd0f6152cb00 Success Error Cancel pending
	       \Driver\ksthunk	nt!PopSystemIrpCompletion
			Args: 00015600 00000000 00000005 00000003
 [N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-ffffbd0f6152cb00    

			Args: 00000000 00000000 00000000 00000000

Çözüm

Burada VX1000.sys sürücüsü dikkatimizi çekiyor. Bu sürücü, kullanılan web kamerasının sürücüsü ve soruna da bu sebep oluyor. LifeCam VX-1000, Microsoft’un eski web kameralarından birisi. Kullanıcı, sürücüyü elle yüklemiş ve bu sürücü de Windows 10’un güncel 2004 sürümü ile çakıştığından soruna sebep oluyor. Sürücünün kaldırılması ile birlikte sorun ortadan kalkıyor.

Öte yandan daha da detaylı bilgi almak için WinDbg içine Arg2 ile birlikte !devstack komutunu giriyoruz: !devstack ffffbd0f618aa570

  !DevObj           !DrvObj            !DevExt           ObjectName
  ffffbd0f5ffc5c40  \Driver\ksthunk    ffffbd0f5ffc5d90  InfoMask field not found for _OBJECT_HEADER at ffffbd0f5ffc5c10

  ffffbd0f5fbbd060  \Driver\VX1000     ffffbd0f5fbbd1b0  InfoMask field not found for _OBJECT_HEADER at ffffbd0f5fbbd030

> ffffbd0f618aa570  \Driver\usbccgp    ffffbd0f618aa6c0  Cannot read info offset from nt!ObpInfoMaskToOffset

!DevNode ffffbd0f61860340 :
  DeviceInst is "USB\VID_045E&PID_00F7&MI_00\6&2ce57e50&0&0000"
  ServiceName is "VX1000"

Bu da bize doğrudan soruna sebep olan aygıtın Donanım Kimliği‘ni veriyor.