none
Синий экран при запуске приложения, win32k.sys RRS feed

  • Общие обсуждения

  •  

    Прошу прощения за возможный оффтопик

    Запускается самописное приложение, и при неопределённых условиях (раз примерно в 1000 запусков) Win2k3 SP1, SP2 Standart Edition падает в синий экран.

    Разные конфигурации железа, эффект проявляется как на физических, так и на виртуальных машинах, эффект проявляется на ~100 машинах (терминальных серверах)

    Подскажите в каком направлении двигаться для решения проблемы?

     

    kd говорит:

     

    Microsoft (R) Windows Debugger Version 6.9.0003.113 X86
    Copyright (c) Microsoft Corporation. All rights reserved.


    Loading Dump File [C:\temp\dmptmn\MEMORY.DMP]
    Kernel Summary Dump File: Only kernel address space is available

    Symbol search path is: srv*c:\symbols *http://msdl.microsoft.com/download/symbols
    Executable search path is: srv*c:\symbols  *http://msdl.microsoft.com/download/symbols
    Windows Server 2003 Kernel Version 3790 (Service Pack 2) MP (8 procs) Free x86 compatible
    Product: Server, suite: TerminalServer
    Built by: 3790.srv03_sp2_gdr.070304-2240
    Kernel base = 0x80800000 PsLoadedModuleList = 0x808a6ea8
    Debug session time: Wed Jun 25 16:41:38.593 2008 (GMT+3)
    System Uptime: 0 days 2:23:12.579
    Loading Kernel Symbols
    ................................................................................................................
    Loading User Symbols
    PEB is paged out (Peb.Ldr = 7ffde00c).  Type ".hh dbgerr001" for details
    Loading unloaded module list
    .......
    ERROR: FindPlugIns 8007007b
    *******************************************************************************
    *                                                                             *
    *                        Bugcheck Analysis                                    *
    *                                                                             *
    *******************************************************************************

    Use !analyze -v to get detailed debugging information.

    BugCheck 8E, {c0000005, bf80f653, f3e66abc, 0}

    Page 123eb8 not present in the dump file. Type ".hh dbgerr004" for details
    Page bd61b not present in the dump file. Type ".hh dbgerr004" for details
    Page 129c11 not present in the dump file. Type ".hh dbgerr004" for details
    Page bd61b not present in the dump file. Type ".hh dbgerr004" for details
    PEB is paged out (Peb.Ldr = 7ffde00c).  Type ".hh dbgerr001" for details
    PEB is paged out (Peb.Ldr = 7ffde00c).  Type ".hh dbgerr001" for details
    Probably caused by : win32k.sys ( win32k!IsAnyCharsetDbcs+38 )

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

    4: kd> kd: Reading initial command '!analyze -v; q'
    ERROR: FindPlugIns 8007007b
    *******************************************************************************
    *                                                                             *
    *                        Bugcheck Analysis                                    *
    *                                                                             *
    *******************************************************************************

    KERNEL_MODE_EXCEPTION_NOT_HANDLED (8e)
    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.
    Some common problems are exception code 0x80000003.  This means a hard
    coded breakpoint or assertion was hit, but this system was booted
    /NODEBUG.  This is not supposed to happen as developers should never have
    hardcoded breakpoints in retail code, but ...
    If this happens, make sure a debugger gets connected, and the
    system is booted /DEBUG.  This will let us see why this breakpoint is
    happening.
    Arguments:
    Arg1: c0000005, The exception code that was not handled
    Arg2: bf80f653, The address that the exception occurred at
    Arg3: f3e66abc, Trap Frame
    Arg4: 00000000

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

    Page 123eb8 not present in the dump file. Type ".hh dbgerr004" for details
    Page bd61b not present in the dump file. Type ".hh dbgerr004" for details
    Page bd61b not present in the dump file. Type ".hh dbgerr004" for details
    PEB is paged out (Peb.Ldr = 7ffde00c).  Type ".hh dbgerr001" for details
    PEB is paged out (Peb.Ldr = 7ffde00c).  Type ".hh dbgerr001" for details

    EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - <Unable to get error code text>

    FAULTING_IP:
    win32k!IsAnyCharsetDbcs+38
    bf80f653 8a08            mov     cl,byte ptr [eax]

    TRAP_FRAME:  f3e66abc -- (.trap 0xfffffffff3e66abc)
    ErrCode = 00000000
    eax=c0818c40 ebx=bc718b88 ecx=bc718b88 edx=00000000 esi=c0818c50 edi=bc680ba8
    eip=bf80f653 esp=f3e66b30 ebp=f3e66b34 iopl=0         nv up ei ng nz na pe cy
    cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010287
    win32k!IsAnyCharsetDbcs+0x38:
    bf80f653 8a08            mov     cl,byte ptr [eax]          ds:0023:c0818c40=??
    Resetting default scope

    DEFAULT_BUCKET_ID:  DRIVER_FAULT

    BUGCHECK_STR:  0x8E

    PROCESS_NAME:  money.exe

    CURRENT_IRQL:  0

    LAST_CONTROL_TRANSFER:  from 8082d800 to 80827c63

    STACK_TEXT: 
    f3e66688 8082d800 0000008e c0000005 bf80f653 nt!KeBugCheckEx+0x1b
    f3e66a4c 8088a262 f3e66a68 00000000 f3e66abc nt!KiDispatchException+0x3a2
    f3e66ab4 8088a216 f3e66b34 bf80f653 badb0d00 nt!CommonDispatchException+0x4a
    f3e66ad4 80a5c456 892c6f48 00000000 892c6f00 nt!KiExceptionExit+0x186
    f3e66b34 bf80ebf8 bc718b88 00000000 00000000 hal!KfLowerIrql+0x62
    f3e66ba8 bf80eb0f bc20a208 0000003c 00000000 win32k!PFEMEMOBJ::bInit+0x8a
    f3e66bec bf963186 0000003c 00000000 001e3cc8 win32k!PFFMEMOBJ::bAddEntry+0x6c
    f3e66c4c bf9636a9 00000051 f3e66d64 f3e66cf0 win32k!PFFMEMOBJ::bLoadDeviceFontTable+0xef
    f3e66c84 bf82ba6d bc003574 bc865008 bc003560 win32k!DEVICE_PFTOBJ::bLoadFonts+0x8f
    f3e66c98 bf84faf4 00000000 00000000 be1d15ac win32k!PDEVOBJ::bGetDeviceFonts+0x30
    f3e66ce8 bf84fa99 bc6c3018 00000003 00000000 win32k!GreEnumFontOpen+0x3b
    f3e66d40 8088978c 152106a8 00000003 00000000 win32k!NtGdiEnumFontOpen+0xc8
    f3e66d40 7c9385ec 152106a8 00000003 00000000 nt!KiFastCallEntry+0xfc
    WARNING: Frame IP not in any known module. Following frames may be wrong.
    0012fc50 00000000 00000000 00000000 00000000 0x7c9385ec


    STACK_COMMAND:  kb

    FOLLOWUP_IP:
    win32k!IsAnyCharsetDbcs+38
    bf80f653 8a08            mov     cl,byte ptr [eax]

    SYMBOL_STACK_INDEX:  0

    SYMBOL_NAME:  win32k!IsAnyCharsetDbcs+38

    FOLLOWUP_NAME:  MachineOwner

    MODULE_NAME: win32k

    IMAGE_NAME:  win32k.sys

    DEBUG_FLR_IMAGE_TIMESTAMP:  47e0f99c

    FAILURE_BUCKET_ID:  0x8E_win32k!IsAnyCharsetDbcs+38

    BUCKET_ID:  0x8E_win32k!IsAnyCharsetDbcs+38

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

    quit:

    26 июня 2008 г. 11:43

Все ответы

  •  Ustin написано:

    DEFAULT_BUCKET_ID:  DRIVER_FAULT

    BUGCHECK_STR:  0x8E

    PROCESS_NAME:  money.exe


    Что за процесс money.exe? ПО или вирус?
    Если вирус, то лечить надо. Если ПО, то очевидно с багами.
    27 июня 2008 г. 4:31
  • ПО. Корпоративное, бухгалтерская программа. Собрана на делфях, никаких посылов по использованию привилегированного режима нет.

    То, что _пользователь_ (доменная учётка, которой вообще мало чего разрешено), воспользовавшись определённым кодом _при отсутствии_ неподписанных драйверов может организовать отказ в обслуживании для жирного сервера терминалов - нормально?

    27 июня 2008 г. 5:30
  •  Ustin написано:

     

    Подскажите в каком направлении двигаться для решения проблемы?

     

     

    Если вы уверены, что падение системы вызывает ваша программа, то с таким надо обращаться суппорт.

    27 июня 2008 г. 8:23
    Модератор
  •  

    Простите, в суппорт майкрософта? Да, падение связано с программой (это можно увидеть в дампе), а разрабом являюсь помимо прочих я. Если майкрософта, то как это сделать (то есть обращения в technet не достаточно?)?
    27 июня 2008 г. 9:01
  • Если у вас есть подписка Technet, то в ее рамках можно открыть инцидент в поддержке, либо для начала написать в подходящую managed news group - этот сервис тоже есть в подписке.

     

    27 июня 2008 г. 9:12
    Модератор
  •  

    Пожалуйста подскажите, возможны ли другие варианты: technet-подписки ни у меня, ни у других людей из компании нет. Что необходимо сделать, чтобы её получить? Возможны ли другие способы инициирования проблемы?
    27 июня 2008 г. 13:40
  • Есть платный суппорт у Майкрософт.

     

    В вашем посте видно,что ошибка драйвера. Возможно это действительно так. Тем более там ссылка на фонты. Это наводит на мысль о плохих драйверах видеокарты.

    30 июня 2008 г. 6:29
    Модератор
  •  

    Лицензированный сервер терминалов, консольных сессий туда нет. Драйвера брендированного сервера, подписанные WHQL

    Временное решение найдено: другой администратор методом исключения нашёл "виноватого" пользователя, удалил его профиль - ждём повторного проявления. Отчёты об ошибках уходят штатным способом в MS

     

    Вопрос: если ошибка действительно из-за некорректного кода, допущенного MS к продаже, то обязан ли пользователь получать в такой ситуации платный суппорт, или есть возможность привлечь разработчиков к проблеме бесплатно?

    7 июля 2008 г. 12:36
  • Только на одной машине такой лаг?

    На другой машине пробывали запускать?

    10 июля 2008 г. 5:48
  • Типичная конфигурация, на которой проявляется:

    Windows Server 2003 Kernel Version 3790 (Service Pack 2) MP (8 procs) Free x86 compatible

    На нескольких терминальных серверах, с разной конфигурацией железа (в основном брендовой сборки). Насколько нужны детали оборудования?

    10 июля 2008 г. 7:54
  • Прочитал еще раз ваш первый пост.

    Some common problems are exception code 0x80000003.  This means a hard
    coded breakpoint or assertion was hit, but this system was booted
    /NODEBUG.  This is not supposed to happen as developers should never have
    hardcoded breakpoints in retail code, but ...

     

    Даже рекомендация есть

     

    If this happens, make sure a debugger gets connected, and the
    system is booted /DEBUG.  This will let us see why this breakpoint is
    happening.

     

    Если это ваша пограмма, то в ней случаем вызова assert не осталось где-нибудь? Вы компилируете с отладочной информацией или без нее?

    10 июля 2008 г. 9:12
    Модератор
  •  

    This means a hard coded breakpoint or assertion was hit, but this system was booted
    /NODEBUG

    Да, это вызов функции KeBugCheckEx, а hardcoded assertion сделано в microsoft при сборке win32k.sys, и сервер действительно не в режиме отладки.

    Если бы по assertу из бухгалтерской программы из-под юзера выпадал багчек, не думаю что капитализация Microsoft была бы такой, какая она сейчас.

    Компилируется проект без DEBUG дерективы Smile

     

    То есть предлагается по SPortу подключиться к серверу и kd посмотреть что происходит в момент падения. В принципе, кусок памяти, принадлежащий ядру на момент падения я вижу в дампе... Это достаточно проблематично, так как сервера находятся на территории РФ, а я в захолустье одной из стран третьего мира. 

     

    Можно ли как-нибудь уговорить терминальный сервер сделать ПОЛНЫЙ дамп памяти, для того чтобы посмотреть весь call stack (а не обрезаный по ядро) чтобы найти user-mode функцию, которая приводит к такому поведению?

     

    10 июля 2008 г. 11:09
  •  

    A файлом кернелдампа поделитесь? Smile

    А полный дамп случаем не настраивается там же где и кернелдамп? Wink

    11 июля 2008 г. 11:44
  •  

    Про полный дамп: получили!!! Ограничив объём памяти 2мя гигами и сделав своп побольше (венда сама предложила). Кстати на MS тоже написано про это ограничение, но как-то неявно

     

    По поводу поделиться - мне не жалко конечно (64 метра в компрессед виде) Smile

    12 июля 2008 г. 6:33