Падение рабочего процесса 1С rphost.exe — одна из самых неприятных проблем для системного администратора и программиста 1С. Ситуация осложняется, когда в системном журнале Windows (Event Viewer) в качестве сбойного модуля указывается системная библиотека ntdll.dll, а код исключения — 0xc0000374. Этот код однозначно указывает на Heap Corruption (повреждение кучи), что означает некорректную работу с динамической памятью.
В данной статье мы подробно разберем, как диагностировать причины такого поведения и какие шаги предпринять для стабилизации работы сервера 1С:Предприятие 8.3.
Прежде чем приступать к активным действиям, нам необходимо понять, что именно происходит внутри процесса в момент падения. Стандартных логов Windows часто недостаточно, поэтому мы настроим сбор Технологического журнала (ТЖ) 1С.
Создадим файл logcfg.xml в каталоге настроек платформы (обычно это C:\Program Files\1cv8\conf) со следующим содержанием:
<config xmlns="http://v8.1c.ru/7.4/config/logcfg">
<log location="C:\LOGS\1C_EXCP" history="24">
<event>
<eq property="Name" value="EXCP"/>
</event>
<event>
<eq property="Name" value="PROC"/>
</event>
<property name="All"/>
</log>
</config>
Проанализируем события EXCP (исключительные ситуации) и PROC (процессы). Мы ищем записи, которые предшествуют моменту завершения процесса rphost.exe. Если в логах фигурируют обращения к внешним компонентам (например, драйверы торгового оборудования), это даст нам прямую наводку на виновника.
Одной из специфических причин падения rphost.exe является разрастание или повреждение файла описания кластера 1CV8Clst.lst. В некоторых случаях там может накопиться огромное количество дублирующихся строк типа SRVSEC.
Рассмотрим порядок действий для очистки настроек кластера:
srvinfo (по умолчанию находится в C:\Program Files\1cv8\srvinfo).reg_1541. Это критически важно, так как там хранятся настройки списка информационных баз.1CV8Clst.lst в текстовом редакторе. Если мы видим тысячи повторяющихся записей, подобных этой:
{bfc628c6-dcd5-46a5-9e26-4d4ae77ff127,"SRVSEC",1,0,1000,91e91e4b-dde3-4230-97ac-019311f05843},
reg_1541 (после создания бэкапа!), запустить службу 1С и заново зарегистрировать информационные базы через консоль администрирования.Важное замечание: При повторной регистрации баз убедитесь, что у пользователя, под которым запускается служба 1С, есть права локального администратора на сервере (хотя бы на время настройки), чтобы исключить проблемы с правами доступа к системным ресурсам ntdll.dll.
Практика показывает, что часто триггером для Heap Corruption выступает выполнение определенных регламентных заданий. Ошибка в коде 1С или в платформе при обработке данных может приводить к утечке или повреждению памяти в контексте серверного вызова.
Выясним причину путем поочередного отключения заданий:
ntdll.dll.В сообщении автора упоминаются драйвера АТОЛ. Это "красный флаг" для ошибки 0xc0000374. Внешние компоненты загружаются в адресное пространство процесса rphost. Если компонента 32-битная, а сервер 64-битный (или наоборот), либо если в DLL драйвера есть ошибка управления памятью, она неизбежно "уронит" весь процесс rphost.
Проанализируем ситуацию:
Поскольку ошибка возникает в ntdll.dll (системный загрузчик и интерфейс ядра), проблема может лежать в плоскости взаимодействия ОС и приложения.
Настройка DEP (Data Execution Prevention): Система предотвращения выполнения данных может ошибочно блокировать легитимные операции 1С с памятью. Рассмотрим настройку исключений:
rphost.exe, rmngr.exe и ragent.exe.Протокол IPv6:
На старых ОС (Windows Server 2008 R2) работа 1С через IPv6 иногда приводила к нестабильности сетевого стека в ntdll.dll. Рекомендуется отключить IPv6 в свойствах сетевого адаптера, если ваша сеть работает на IPv4.
Еще один частый виновник падений — индекс полнотекстового поиска (ПП). Если индекс поврежден, попытка его обновления процессом rphost может приводить к критическому сбою.
Выполним следующие действия:
index в каталоге базы в srvinfo).Проанализировав все вышеперечисленные шаги, мы можем сделать вывод, что ошибка 0xc0000374 редко лечится простой переустановкой платформы. Чаще всего требуется комплексный подход: очистка реестра кластера, аудит регламентных заданий и контроль версий внешних компонент.