Регистрация | Последние сообщения | Персональный список | Поиск | Настройка конференции | Личные данные | Правила конференции | Список участников | Top 64 | Статистика раздела | faq | Что нового v.2.3 | Чат
Skunk Forum - Техника, Наука, Общество » Коммуникации и сетевые технологии »
Ошибки чтения памяти (вылетает ntvdm на сервере citrix)

Версия для печати (настроить)

Новая тема | Написать ответ

Подписаться

Автор Тема:   Ошибки чтения памяти (вылетает ntvdm на сервере citrix)
skolopendra
Junior Member

Сообщений: 12
Регистрация: Сентябрь 2008

написано 08 Декабря 2011 15:53ИнфоПравкаОтветитьIP

Добрый день! Может быть, кто-то сталкивался с подобной проблемой.
Windows Server 2003, на нем установлен Citrix Metaframe Presentation server. Опубликована foxpro-шная dos-программа (что-то вроде 1С). Она часто вылетает (иногда несколько раз в день). Обычно ошибка происходит при обращении к определенным справочникам, но бывает и из-за других действий. При работе в этой программе не через Citrix все в порядке.

На клиенте в момент краха выдается ошибка ntvdm "Инструкция 0х0f047804 обратилась к памяти 0x000001d. Память не может быть read". На сервере в журнале примерно то же
"Faulting application ntvdm.exe, version 5.2.3790.3959, faulting module ntvdm.exe, version 5.2.3790.3959, fault address 0x00047804."

Лог DrWatson зафиксировал такую информацию (привожу частично):
Exception number: c0000005 (access violation)
- - - - -
*----> State Dump for Thread Id 0x465c <----*

eax=0105ff18 ebx=017a2560 ecx=017a2838 edx=017a2560 esi=017a2560 edi=00000000
eip=0f047804 esp=0105fef0 ebp=0105ff1c iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=00b7 es=0040 fs=003b gs=0000 efl=00010202

*** ERROR: Symbol file could not be found. Defaulted to export symbols for S:\WINDOWS\system32\ntvdm.exe -
function: ntvdm!cpu_createthread
0f0477df 7403 jz ntvdm!cpu_createthread+0x5f9 (0f0477e4)
0f0477e1 0000 add [eax],al
0f0477e3 ffb368030000 push dword ptr [ebx+0x368]
0f0477e9 ffb364030000 push dword ptr [ebx+0x364]
0f0477ef ffb370030000 push dword ptr [ebx+0x370]
0f0477f5 ffb36c030000 push dword ptr [ebx+0x36c]
0f0477fb ffb398030000 push dword ptr [ebx+0x398]
0f047801 9d popfd
0f047802 07 pop es
0f047803 1f pop ds
FAULT ->0f047804 0fa9 pop gs
0f047806 0fa1 pop fs
0f047808 61 popad

Конфигурация сервера: ОС Win Server 2003 Std Edition SP2, Intel Xeon CPU 3.06 ГГц, 4-процессорный, 2 Гб ОЗУ + файл подкачки (min size 2046-4092).
Настройка DEP - /fastdetect /redirect /NoExecute=AlwaysOff
Когда отключали совсем - /EXECUTE /NOPAE, ошибка стала слишком частой.

-------------------------
Посоветовали попробовать запустить приложение в другом dos-эмуляторе (возилась с dosbox, но программа работает с сетевым hasp ключом, в досбоксе трудно с сетью, поэтому пока отложила этот метод). Еще советовали удалить файл подкачки и создать заново с фиксированным размером, на сколько это целесообразно? (лишний раз перегружать сервер проблематично, люди допоздна работают на нем).

Буду благодарна любому совету, в гугле нашлось мало по моей проблеме. Заранее спасибо.

Добавление от 08 Декабря 2011 16:00:

Да, забыла еще, адрес памяти всегда один и тот же. Антивирусник сносила совсем, не помогло. Память не загружена.
Серверов Citrix с этим приложением несколько, ошибка одинаковая на всех.

jz
Ideology Administrator

Сообщений: 5516
Откуда: SkunksWorks
Регистрация: Сентябрь 2005

написано 08 Декабря 2011 16:14ИнфоПравкаОтветитьIP

skolopendra
По умолчанию предполагая, что сервер чист от вирусов, могу посоветовать увеличить объём доступной памяти для DOS-сессии, в пределе до значений "-1", затем подстроить исходя из требований к работе других ролей сервера.

советовали удалить файл подкачки и создать заново с фиксированным размером, на сколько это целесообразно?
Файл подкачки фиксированного размера на нефрагментированном разделе целесообразно иметь всегда.

skolopendra
Junior Member

Сообщений: 13
Регистрация: Сентябрь 2008

написано 08 Декабря 2011 16:24ИнфоПравкаОтветитьIP

Здравствуйте, jz!
Уточните, пожалуйста, память для дос-сессии - это в файле _default.pif? (там везде Авто) Или в файлах Autoexec.nt и Config.fp. Или в другом месте?

Добавление от 08 Декабря 2011 16:25:

И я правильно поняла, что на сервере, а не на клиенте?

jz
Ideology Administrator

Сообщений: 5518
Откуда: SkunksWorks
Регистрация: Сентябрь 2005

написано 08 Декабря 2011 16:31ИнфоПравкаОтветитьIP

skolopendra
Уточните, пожалуйста, память для дос-сессии - это
..в ярлыке запуска непосредственно конкретной программы. Не надо насиловать централизованные настройки.

И я правильно поняла, что на сервере, а не на клиенте?
А на клиенте что-то кроме Citrix-клиента вообще запускается?

skolopendra
Junior Member

Сообщений: 14
Регистрация: Сентябрь 2008

написано 08 Декабря 2011 16:40ИнфоПравкаОтветитьIP

Так, еще немного Вас помучаю. Запуск приложения идет из батника, батник вызывает exe. В свойствах exe-шника на вкладке память мне надо какую память настроить (извините, я раньше не настраивала dos-программы) - Обычная, Отображаемая, Дополнительная или Память DPMI для защищенного режима? И какое значение лучше поставить, максимум? Еще на вкладке Экран нашелся флажок "Динамическое выделение памяти" - его не надо снимать?

jz
Ideology Administrator

Сообщений: 5520
Откуда: SkunksWorks
Регистрация: Сентябрь 2005

написано 08 Декабря 2011 16:41ИнфоПравкаОтветитьIP

Да, и акцентируясь на слове "foxpro-шная": FoxPro - это не SQL, при одновременном доступе к одной и той же базе нескольких конкурирующих клиентских приложений, изначально не писаных для совместного доступа, могут возникать конфликты. Если это так и есть, тут надо подробнее разбираться, в пределе переписывать на более современную БД.

skolopendra
Junior Member

Сообщений: 15
Регистрация: Сентябрь 2008

написано 08 Декабря 2011 16:48ИнфоПравкаОтветитьIP

Возможно, с этой программы перейдут на 1С. Но, думаю, не в ближнем будущем. Переписывать тоже думаю, не будут. Поэтому придется что-то колдовать с тем, что есть. Меня смущает, что проблема появляется только при работе через Citrix и всегда с одним и тем же адресом.

jz
Ideology Administrator

Сообщений: 5521
Откуда: SkunksWorks
Регистрация: Сентябрь 2005

написано 08 Декабря 2011 16:48ИнфоПравкаОтветитьIP

skolopendra
Для начала, свойствах exe-шника в данной ситуации ничего менять не надо. Надо создать ярлык на батник, и уже там настраивать.

Обычная, Отображаемая, Дополнительная
Можно сначала выставить 640 / -1 / -1, потом подстроить поточнее методом "вилки".
Также можно поиграться со значением флажка "Защищённый режим". Обратить внимание на то, что ещё запускается в том батнике, наконец.

Еще на вкладке Экран нашелся флажок "Динамическое выделение памяти"
Графические параметры для терминальной сессии тоже можно подёргать, но это желательно делать не одновременно с показателями выделения памяти.

skolopendra
Junior Member

Сообщений: 16
Регистрация: Сентябрь 2008

написано 08 Декабря 2011 16:52ИнфоПравкаОтветитьIP

В Свойствах ярлыка не нашла вкладки Память. Чем плохо настраивать exe-шник? Значение -1 это "Нет" (там нет "-1")?

Добавление от 08 Декабря 2011 16:54:

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

jz
Ideology Administrator

Сообщений: 5523
Откуда: SkunksWorks
Регистрация: Сентябрь 2005

написано 08 Декабря 2011 16:55ИнфоПравкаОтветитьIP

skolopendra
Значение -1 это "Нет" (там нет "-1")
Тогда использовать "16384", затем не забыть уменьшить, ибо памяти может не хватить другим инстанциям. Много ли одновременно запускается инстанций приложения на сервере? Ошибки происходят только в случае, когда их запущено несколько?

Чем плохо настраивать exe-шник?
Плохо тем, что в процессе такой настройки создастся ярлык непосредственно на него, где и будут сохранены настройки, к батнику не имеющие никакого отношения.

[Это сообщение изменил jz (изменение 08 Декабря 2011 17:33).]

skolopendra
Junior Member

Сообщений: 17
Регистрация: Сентябрь 2008

написано 08 Декабря 2011 17:05ИнфоПравкаОтветитьIP

Помимо этого приложения на сервере опубликовано несколько других, в целом количество запущенных ntvdm от трех и более.
Когда на сервере запускается только одна дос-программа, ошибки не появляется. Поэтому опубликовали эту программу на еще двух серверах, что немного улучшило ситуацию.

Большое спасибо Вам за советы! Завтра буду подбирать настройки.

Добавление от 08 Декабря 2011 17:09:

Ярлык создается (стандартно, правой кнопкой) и присутствуют все вкладки, кроме Память.

Не очень поняла про exe, ведь батник ссылается именно на него. В папке с exe-шником есть еще ярлык для этого exe-шника, Вы наверное, его и имели в виду (выглядит как файл pif, вкладка Память есть). Наверное, его мне и надо настраивать, да?

jz
Ideology Administrator

Сообщений: 5525
Откуда: SkunksWorks
Регистрация: Сентябрь 2005

написано 08 Декабря 2011 17:26ИнфоПравкаОтветитьIP

skolopendra
Когда на сервере запускается только одна дос-программа, ошибки не появляется.
Плохая новость - это конфликт конкурентного обращения к БД. Разнести каждую по своей БД нельзя?

Не очень поняла про exe, ведь батник ссылается именно на него. В папке с exe-шником есть еще ярлык для этого exe-шника, Вы наверное, его и имели в виду (выглядит как файл pif, вкладка Память есть). Наверное, его мне и надо настраивать, да?
Тьфу, блин, зарапортовался
Да, но лучше уж тогда сразу в настройках ярлыка для .EXE прописать и каталог программы, а переменные - autoexec.nt.
Но всё это вряд ли будет иметь смысл, ибо см. предыдущий мой вывод. Однако тут может иметь смысл выставить параметр
FILES=140
в config.nt
и посмотреть результат.

skolopendra
Junior Member

Сообщений: 18
Регистрация: Сентябрь 2008

написано 09 Декабря 2011 14:26ИнфоПравкаОтветитьIP

Здравствуйте! Не сильна в foxpro, у нас файлы DBF лежат в папке с программой и очень большого размера, поэтому, думаю, выделить каждому персональную базу не получится. И программисты вряд ли будут что-либо переписывать.

Попробовала править файл pif для exe-шника и файлы autoexec.nt, config.nt, config.fp из каталога программы (на сетевом диске). При запуске не через Citrix мои изменения не действуют, применяются настройки из локальных файлов конфигов (C:\windows\system32). В свойствах pif и exe прописала явно путь до autoexec и config, все равно применяются локальные конфиги. Я подозреваю, что настройки памяти тоже не работают.

Параметр files в config.nt равен 240.

Так же пробовала засунуть в config.fp (в папку в программой) строку MEMLIMIT=40,1024,1024 (по минимуму). В работе программы эти изменения не ощутились. Вообще, эти конфигурационные файлы, если они расположены в папке с exe-шником, должны работать или их надо еще где-то указать?

jz
Ideology Administrator

Сообщений: 5536
Откуда: SkunksWorks
Регистрация: Сентябрь 2005

написано 09 Декабря 2011 14:47ИнфоПравкаОтветитьIP

skolopendra
Можно попробовать то же самое сделать на общесистемном уровне, но это не даст эффекта, ибо проблема в совместном доступе к БД. С ней и надо что-то решать. К сожалению, я не дам совета, как взять и превратить FoxPro в SQL..

skolopendra
Junior Member

Сообщений: 19
Регистрация: Сентябрь 2008

написано 09 Декабря 2011 15:01ИнфоПравкаОтветитьIP

Большое спасибо, Вы и так уже мне помогли!
Скажите, пожалуйста, ваше мнение по еще двум вопросам.

- почему вы считаете, что проблема в совместном доступе (я не спорю, просто не очень понимаю). Почему изменение настроек DEP влияет на работу программы? Если проблема только в доступе в БД, она должна как-то проявляться при работе не через терминальный сервер, ведь БД одна общая. Или я неправильно думаю?
- на сервере запущено несколько процессов hpbpro.exe и hpboid.exe (связаны с драйверами принтеров HP). Это нормально, что их несколько? Где-то мельком упоминалось, что драйвера HP могут приводить к проблемам ntvdm.

Спасибо Вам за советы, jz.

jz
Ideology Administrator

Сообщений: 5537
Откуда: SkunksWorks
Регистрация: Сентябрь 2005

написано 09 Декабря 2011 15:14ИнфоПравкаОтветитьIP

skolopendra
почему вы считаете, что проблема в совместном доступе (я не спорю, просто не очень понимаю)
Конфликт общего доступа к файлам БД со стороны разных программ.

Почему изменение настроек DEP влияет на работу программы?
Повторюсь, при таких симптомах, если исключить деятельность вируса, имеет смысл "играться" с отведением памяти для DOS-сессии: возможно её не хватает. Сюда же отнесём и параметры BUFFERS и FILES в config.nt. Нужно также проследить за отсутствием факта переполнения файла подкачки.

Если проблема только в доступе в БД, она должна как-то проявляться при работе не через терминальный сервер, ведь БД одна общая
Это говорит против "теории" о проблеме общего доступа.

на сервере запущено несколько процессов hpbpro.exe и hpboid.exe (связаны с драйверами принтеров HP). Это нормально, что их несколько?
Да, т.к. запускаются они, судя по всему, от имени разных пользователей.

Где-то мельком упоминалось, что драйвера HP могут приводить к проблемам ntvdm
Что если попробовать их вообще выкинуть из автозагрузки? Это не драйверы как таковые, это мониторы драйверов. Их отсутствие не должно повлиять на доступность принтеров, разве что могут исчезнуть дополнительные функции наподобие индикатора уровня чернил. Но это проверяется экспериментально, при неэффективности - "вернуть всё взад".

skolopendra
Junior Member

Сообщений: 20
Регистрация: Сентябрь 2008

написано 09 Декабря 2011 15:28ИнфоПравкаОтветитьIP

Про память и общий доступ поняла)
Про принтеры - процессов hpboid и hpbpro около 40, а пользователей на сервере от 2 до 20 в равное время. И эти процессы запущены от имени system (сужу по диспетчеру задач). Видимо, они остаются висеть после отключения пользователя. Т.е не вполне нормально?

jz
Ideology Administrator

Сообщений: 5539
Откуда: SkunksWorks
Регистрация: Сентябрь 2005

написано 09 Декабря 2011 15:39ИнфоПравкаОтветитьIP

эти процессы запущены от имени system
А во вкладке "Управление компьютером - Службы" они числятся? Просто вышибать оттуда - занятие куда более ответственное, чем просто из автозагрузки, HKLM, HKCU. Если же они от имени Local System умудряются запуститься, находясь в автозагрузке пользователей, да ещё и если это именно пользователи, а не с правами администратора, то это по меньшей мере странно.

skolopendra
Junior Member

Сообщений: 21
Регистрация: Сентябрь 2008

написано 09 Декабря 2011 16:16ИнфоПравкаОтветитьIP

В Службах относительно принтеров есть HP Port Resolver и Print Spooler, а относительно HP - несколько служб для мониторинга пролиантовских серверов (HP Insight Event notifier, Server/Storage/NIC Agents, HP System Homepage).
Пользователи заходят с правами пользователя.

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

Спасибо, jz!

Ваш ответ:

Коды форума
Смайлики


Ник:    Пароль       
Отключить смайлики

Все время MSK

Склеить | Разбить | Закрыть | Переместить | Удалить

Новая тема | Написать ответ
Последние сообщения         
Перейти к:

Свяжитесь с нами | skunksworks.net

Copyright © skunksworks.net, 2000-2018

Разработка и техническая поддержка: skunksworks.net


Рейтинг@Mail.ru Яндекс.Метрика