Назад | Перейти на главную страницу

Windows Terminal Server: случайное нарушение памяти для приложений

На виртуализированном (ESXi 4.1) 32-разрядном компьютере под управлением Windows Server 2008 SP2, который используется в качестве терминального сервера, я иногда (примерно 1–3 записи журнала событий в день) вижу, что приложения не работают с ошибкой 0xc0000005 - очевидно, нарушение доступа к памяти.

Проблема кажется довольно случайной и плохо воспроизводимой - приложения могут работать часами, выходить из строя с 0xc0000005 и перезапускаться нормально или просто сбрасывать нарушение прав доступа при запуске и безупречно запускаться со второй попытки.

Имена исполняемых файлов, модулей и адреса смещения различаются, хотя один исполняемый файл имеет тенденцию выходить из строя с одними и теми же модулями и теми же адресами смещения памяти (например, «OUTLOOK.EXE» постоянно дает сбой в модуле «olmapi32.dll» со ​​смещением «0x00044b7a») - даже при входе нескольких пользователей в систему и в течение нескольких дней без единого сбоя между ними. Однако адреса смещения, похоже, меняются при перезагрузке. Похоже, что проблема затрагивает только избранные исполняемые файлы, хотя я, возможно, просто не вижу достаточного количества запусков приложений из других.

Сначала я подозревал возможную проблему с ОЗУ физической машины, но исключил это как довольно маловероятную причину - память поставляется с ECC, и я уже несколько раз перемещал виртуальную машину без каких-либо заметных изменений.

Я видел, что DEP был включен в режиме «OptOut» на этом компьютере:

C:\Users\administrator>wmic OS Get DataExecutionPrevention_SupportPolicy
DataExecutionPrevention_SupportPolicy
3

и попытался изменить политику на OptIn через параметры запуска:

bcdedit.exe /set {current} nx OptIn

но еще не заметил никакого эффекта - я также ожидал бы, что Outlook 12 или Adobe Reader 9 (оба затронутые приложения) будут хорошо работать с DEP.

Есть ли другие идеи, почему приложения могут не работать?

Каждый раз, когда у меня возникали проблемы с ошибкой 0xc0000005 на сервере терминалов, это оказывалось проблемой с DEP.

Вы пытались установить режим DEP обратно на «OptOut», а затем явно перечислить все двоичные файлы, которые вызывают проблемы?

Для меня это звучит как плохой указатель или какое-то перекрытие памяти в коде приложения. Вы проверяли, является ли это известной ошибкой в ​​Outlook и / или Adobe?