1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Переполох Йорм Поэзия Календарь Гильдия Дайджест Календарь событий в Aion

В продолжении темы про зависание клиента

Discussion in 'Архив' started by SkyRiver, Jul 11, 2013.

  1. SkyRiver

    SkyRiver User

    Joined:
    05.01.10
    Messages:
    158
    Likes Received:
    42
  2. Ari0nhh

    Ari0nhh User

    Joined:
    22.12.09
    Messages:
    4,684
    Likes Received:
    356
    это интересный сбой. сам bugcheck выглядит так:
    Code:
    0: kd> .bugcheck
    bugcheck code 00000101
    arguments 00000000`00000019 00000000`00000000 fffff880`03367180 00000000`00000007
    
    00000101 это clock_watchdog_timeout - процессор не прореагировал на прерывание системного таймера в течении 0х19 (25) квантов (375 мс).
    причин тому может быть несколько:
    • общая нестабильность cpu/gpu, вызванная, например, разгоном;
    • баг в bios;
    • какой-то из драйверов элементарно замаскировал все прерывания инструкцией cli и вследствие какого-либо сбоя/ошибки в коде не вызвал sti;
    • irql был поднят драйвером до clock_level или выше в результате прерывание от таймера не может быть обработано.

    попробуем проверить эти вещи последовательно.
    1. разгон & bios
    Code:
    0: kd> !sysinfo cpuinfo
    [cpu information]
    ~mhz = reg_dword 3103
    component information = reg_binary 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    configuration data = reg_full_resource_descriptor ff,ff,ff,ff,ff,ff,ff,ff,0,0,0,0,0,0,0,0
    identifier = reg_sz intel64 family 6 model 26 stepping 5
    processornamestring = reg_sz intel(r) core(tm) i7 cpu         950  @ 3.07ghz
    update signature = reg_binary 0,0,0,0,11,0,0,0
    update status = reg_dword 6
    vendoridentifier = reg_sz genuineintel
    msr8b = reg_qword 1100000000
    0: kd> !sysinfo cpuspeed
    cpuid:        "intel(r) core(tm) i7 cpu         950  @ 3.07ghz"
    maxspeed:     3070
    currentspeed: 3103
    
    Code:
    0: kd> !sysinfo smbios
    [smbios data tables v2.4]
    [dmi version - 36]
    [2.0 calling convention - no]
    [table size - 1277 bytes]
    
    [bios information (type 0) - length 24 - handle 0000h]
      vendor                        award software international, inc.
      bios version                  fb
      bios starting address segment e000
      bios release date             08/24/2010
      bios rom size                 200000
      bios characteristics
           07: - pci supported
           09: - plug and play supported
           11: - upgradeable flash bios
           12: - bios shadowing supported
           15: - cd-boot supported
           16: - selectable boot supported
           19: - edd supported
           22: - 360kb floppy supported
           23: - 1.2mb floppy supported
           24: - 720kb floppy supported
           25: - 2.88mb floppy supported
           26: - print screen device supported
           27: - keyboard services supported
           28: - serial services supported
           29: - printer services supported
           30: - cga/mono services supported
      bios characteristic extensions
           00: - acpi supported
           01: - usb legacy supported
           04: - ls120-boot supported
           05: - atapi zip-boot supported
           08: - bios boot specification supported
           10: - specification reserved
      bios major revision           255
      bios minor revision           255
      ec firmware major revision    255
      ec firmware minor revision    255
    [system information (type 1) - length 27 - handle 0001h]
      manufacturer                  gigabyte technology co., ltd.
      product name                  x58a-ud5
      version                        
      serial number                  
      uuid                          00000000-0000-0000-0000-000000000000
      wakeup type                   power switch
      skunumber                      
      family                         
    [baseboard information (type 2) - length 8 - handle 0002h]
      manufacturer                  gigabyte technology co., ltd.
      product                       x58a-ud5
      version                       x.x
      serial number                  
    [system enclosure (type 3) - length 17 - handle 0003h]
      manufacturer                  gigabyte technology co., ltd.
      chassis type                  desktop
      version                        
      serial number                  
      asset tag number               
      bootup state                  unknown
      power supply state            unknown
      thermal state                 unknown
      security status               unknown
      oem defined                   0
    [processor information (type 4) - length 35 - handle 0004h]
      socket designation            socket 1366
      processor type                central processor
      processor family              01h - other
      processor manufacturer        intel
      processor id                  a5060100fffbebbf
      processor version             intel(r) core(tm) i7 cpu
      processor voltage             8ah - 1.0v
      external clock                133mhz
      max speed                     4000mhz
      current speed                 3200mhz
      status                        enabled populated
      processor upgrade             socket 478
      l1 cache handle               000ch
      l2 cache handle               000dh
      l3 cache handle               [not present]
      serial number                  
      asset tag number               
      part number  
    
    последняя версия bios для материнской платы x58a-ud5 rev2 на сайте производителя - ff1 (15.05.2011), у вас стоит fb (24.08.2010). судя по !sysinfo, процессор не разогнан.

    к сожалению, посмотреть статус apic, чтобы увидеть какие аппаратные прерывания замаскированы по выложенному дампу нельзя, т.к. области памяти, где находится эта информация, в дампе нет.
    однако текущий уровень irql увидеть можно:
    Code:
    0: kd> !irql
    debugger saved irql for processor 0x0 -- 13
    
    в x64 системах 13 == clock_level, но на самом деле это мало о чем говорит, irql может быть поднят самим ядром по приходу аппаратного прерывания.
    смотрим текущий стек:
    Code:
    0: kd> kb
    retaddr           : args to child                                                           : call site
    fffff800`03332a3a : 00000000`00000101 00000000`00000019 00000000`00000000 fffff880`03367180 : nt!kebugcheckex
    fffff800`032e56e7 : fffff880`00000000 fffff800`00000007 00000000`00026160 fffff800`03224b7f : nt! ?? ::fnodobfm::`string'+0x4e3e
    fffff800`03227895 : fffff800`0324d460 fffff880`0353f770 fffff800`0324d460 fffffa80`00000000 : nt!keupdatesystemtime+0x377
    fffff800`032d8153 : 00000000`7d02732a fffff800`03456e80 00000000`00000000 00000000`00000000 : hal!halphpetclockinterrupt+0x8d
    fffff800`032e09e0 : fffff800`03456e80 fffffa80`00000001 00000000`00000000 fffff880`0353f978 : nt!kiinterruptdispatchnolock+0x163
    fffff800`0331f95c : fffff880`0353fc58 00000000`00000000 00000000`00000000 fffff800`0331df0d : nt!keflushmultiplerangetb+0x260
    fffff800`0331c751 : fffffa80`04f87b50 00000000`00000000 fffff880`0353fc58 00000000`00000000 : nt!mmsetaddressrangemodified+0x2b0
    fffff800`03320136 : fffffa80`08421b88 00000000`00000001 fffffa80`00000001 fffffa80`00002000 : nt!ccflushcache+0x561
    fffff800`03320af8 : fffff880`00000000 fffff880`0353fc58 fffffa80`080f1540 fffff800`034e28b8 : nt!ccwritebehind+0x1c6
    fffff800`032e5251 : fffffa80`04f5d7d0 fffff800`035d3d01 fffff800`034e28c0 89456ebe`00000002 : nt!ccworkerthread+0x1c8
    fffff800`03579ede : 7557b367`2739451b fffffa80`04f87b50 00000000`00000080 fffffa80`04eeb040 : nt!expworkerthread+0x111
    fffff800`032cc906 : fffff880`03367180 fffffa80`04f87b50 fffff880`033720c0 c31d53ab`bbc09719 : nt!pspsystemthreadstartup+0x5a
    00000000`00000000 : fffff880`03540000 fffff880`0353a000 fffff880`0353f9e0 00000000`00000000 : nt!kxstartsystemthread+0x16
    
    судя по стеку, сбой произошел в процессе сброса данных из кеша на дисковую подсистему, т.е фактически на ровном месте. пришло прерывание от таймера, сработал watchdog и система ушла в синий экран.
    посмотреть стеки других процессоров, к сожалению, тоже нельзя, т.к. triage-дамп не содержит этой информации.

    что рекомендуется сделать:
    1. обновить bios и драйверы до последних версий с сайта производителя;
    2. посмотреть раздел "временное решение".
    3. временно удалить isodrive

    если проблема устранена не будет - в настройках системы выберите создание полных дампов ядра и выложите новый дамп ошибки.
     
    SkyRiver and Dragonchick like this.