Аварийное закрытие программы 1С:Предприятие с ошибкой APPCRASH, модулем MSVCR110.dll и кодом исключения c0000005 (Access Violation) — одна из наиболее коварных неполадок при эксплуатации файловых баз. Характерным симптомом является плавающий сбой: база стабильно функционирует на компьютере, где файлы расположены локально, но регулярно и спонтанно падает у пользователей, подключающихся к ней через общую сетевую папку (SMB-ресурс).
Код c0000005 означает нарушение прав доступа к памяти: процесс пытается прочитать или записать данные по адресу, к которому у него нет доступа. В контексте файловой 1С это практически всегда связано с потерей дескриптора открытого файла 1Cv8.1CD из-за микроразрывов сетевого соединения, агрессивного кэширования Windows или блокировок. Разберем по шагам, как выявить корень проблемы и полностью устранить аварийные завершения.
Проанализируем журнал событий Windows. Нередко возникает ситуация, когда на рабочих станциях установлено несколько релизов технологической платформы. Например, в операционной системе установлена версия 8.3.9, а журнал регистрации ошибок фиксирует падение исполняемого файла 1cv8c.exe версии 8.3.5:
1CEStart.exe, а не через прямой ярлык на исполняемый файл в каталоге конкретной устаревшей версии bin\1cv8c.exe.8.3.5), сотрем это значение или укажем актуальную используемую платформу.По умолчанию сетевой протокол SMB2/SMB3 применяет кэширование метаданных и оппортунистические блокировки (OpLocks / Lease). Они прекрасно ускоряют работу с отдельными документами Office, но приводят к повреждению дескрипторов при одновременной работе нескольких пользователей с единой базой 1Cv8.1CD.
Отключим кэширование каталогов на клиентах, подключающихся по сети. Для этого откроем редактор реестра regedit, перейдем в ветку:
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters
Создадим или изменим следующие параметры типа DWORD (32 бита), установив их значение в 0:
DirectoryCacheLifetime — значение 0;FileInfoCacheLifetime — значение 0;FileNotFoundCacheLifetime — значение 0.На компьютере, где физически расположена база (хосте сетевой папки), рекомендуется отключить оппортунистические блокировки либо изменить режим аренды каталога (LeasingMode), чтобы локальный дисковый кэш хоста не конфликтовал с клиентами.
Файловая база 1С крайне чувствительна к кратковременным сетевым задержкам. Обычные браузеры или копирование файлов не замечают задержки в доли секунды, но для процесса 1С это оборачивается фатальной ошибкой распределения памяти.
Проанализируем сетевые настройки на всех взаимодействующих ПК:
Large Send Offload (LSO);TCP/IPv4 Checksum Offload;Flow Control (Управление потоком);Energy Efficient Ethernet (Green Ethernet).Иногда падение MSVCR110.dll провоцируется поврежденными пользовательскими настройками форм или отчетов (особенно при выводе индикаторов выполнения, динамических списков или диаграмм СКД). Выполним сброс параметров пользователя программным способом:
ОчиститьНастройкиПользователя(ПользователиИнформационнойБазы);
Также удалим каталоги локального кэша на рабочей станции. Для этого закроем все процессы 1С и очистим содержимое каталогов:
%LOCALAPPDATA%\1C\1cv8%APPDATA%\1C\1cv8Файловые мониторы антивирусов могут блокировать доступ к вспомогательным файлам базы в момент записи, провоцируя сбой c0000005:
*.1cd, *.cfl, *.TMP, *.lgd, *.lgf.Если размер файловой базы превышает 1 Гб, архитектура доступа через общую папку Windows (SMB) неизбежно будет давать сбои. Для надежной работы необходимо перевести пользователей на бесконфликтные варианты доступа:
1Cv8.1CD выполняет веб-сервер, а клиенты получают сериализованные данные, что полностью защищает от сбоев MSVCR110.dll и не требует покупки серверной лицензии 1С.