1cv8 exe версии прекратила взаимодействие с windows

1cv8 exe версии прекратила взаимодействие с windows

Добрый день! Уважаемые читайте и гости популярного IT блога Pyatilistnik.org. В прошлый раз мы с вами изучили вопрос, где в вашей системе располагаются ваши сертификаты пользователя и компьютера. Двигаемся далее и на повестке для у меня возникла проблема, которую я буду решать и вести в данной статье лог действий помогающих достижению цели. Сегодня я разберу ошибку при работе программы 1С предприятие, а именно она вылетает с событием «Программа 1cv8c.exe версии 8.3.14.1630 прекратила взаимодействие с Windows и была закрыта.» или «Имя сбойного приложения: 1cv8c.exe, версия: 8.3.14.1630, метка времени: 0x5c6e4c97«. Надеюсь, что вместе с вами мы решим данную проблему.

Описание проблемы

Есть RDS ферма в режиме HA, построенная на базе серверов Windows Server 2012 R2. В совершенно разное время появляются жалобы, что пользователь не может корректно выйти из системы(/na-terminalnom-servere-visit-vyhod-iz-sistemy/), ряд мер я описывал по данному вопросу, но они к сожалению срабатывают не всегда. В такой ситуации пока алгоритм был такой, пользователям отправлялось уведомление на терминальный стол, после чего шла перезагрузка. Просматривая логи событий, во всех случаях присутствовали одни и те же ошибки, и все они указывали на какой-то косяк со стороны 1С 8.3.14.1630. Вот вам примеры текущих ошибок:

Видно, что из-за этой ошибки 1С так же повис проводник Windows:

Алгоритм поиска проблемы

Сразу скажу, что внятного ответа ни разработчики 1С ни техническая поддержка мне дали, все сказали, что у вас проблема с системой. И так, что я делал при поиске проблемы:

1. Вводил абсолютно свежий сервер с установленным Windows Server 2012 R2, эффекта не дало, ошибка все так же появилась
2. Удалил все неиспользуемые версии 1С, остались на текущий момент
3. Пробовал удалять кэш 1С, эффекта не дало
4. Переустановка самого клиента 1С, эффекта нет

Читайте также:  Windows горячие клавиши переместить окно

Далее я решил попробовать собрать трассировку работы приложения по определенным провайдерам Winows и 1С, я такое делал уже при проблеме временного профиля на терминальных серверах. Для этих целей я использовал утилиту logman.exe.

Утилита Logman.exe

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

Когда вы захватываете через утилиту Logman.exe трассировку событий, то создается очень объемный лог, и если вы его не ограничите, то он забьет ваш диск за час. Для того, чтобы его слегка минимизировать мы может явным образом указать какие именно провайдеры Windows вы должны захватывать, как их определить я покажу чуть ниже. Откройте командную строку, лучше в режиме администратора, чтобы всякие UAC вам не мешали. Далее посмотрим всех доступных поставщиков, если не будет влезать на экран, то можете воспользоваться ключом | more или запустить все в PowerShell.

Как видим их приличное количество, но нам бы хотелось анализировать только те, что относятся к 1С. Чтобы отфильтровать, поставщиков Windows, вы можете использовать PID процесса. В диспетчере задач найдите нужный вас процесс, предположим в моем примере это ID 42424

В командной строке пишем:

На выходе вы получите уже меньшее количество поставщиков Windows, у меня это получилось вот так для 1С 8.3.14.1630. Тут нас будут интересовать исключительно GUID.

Вам необходимо в текстовый файл сохранить именно GUID значения, по одному значению в строке. Далее этот файл нам будет нужен, при мониторинге. Создайте у себя для удобства отдельную папку. в которую сохраните файл со списком GUID. у меня это будет путь C:\tmp\provaders8.txt. Далее вам нужно определиться сколько вы готовы отдать под файл лога, учтите что он заполняется молниеносно, и сохраняется в сжатом виде в формате .etl, но если вы его потом распакуете, то например 50 МБ превратятся в 750, это нужно учитывать, но есть и обратная сторона нужно больше данных для диагностики, поэтом маленьким его делать так же нет смысла. Я в своем поиске сделаю его 3 ГБ.

Читайте также:  Free office linux mint

В командной строке создаем новую трассировку в Logman.exe:

  • -n задает имя вашей трассировки приложения
  • -max — задает максимальный размер файла
  • -ow — перезаписать текущий файл если он существует
  • -o — путь до файла .etl
  • -ets — Отправить команды сеансам трассировки событий напрямую, без сохранения или планирования.
  • f bincirc — включить цикл перезаписывания файла новыми данными

Далее нам необходимо обновить наше задание и сказать, что собирать данные нужно по определенным провайдер, которые находятся у нас в файле:

  • -pf — указать путь до файла с GUID

В итоге у вас начинается наполнение файла .etl

Посмотреть статус и список работающих провайдеров вы можете командой:

Я вижу, что мой сеанс отслеживания событий под именем 1С8 работает. Кстати если вы откроете оснастку «Управление компьютером» и перейдете в раздел «Производительность — Группы сборщиков данных — Сеансы отслеживания событий», то вы увидите тот же список заданий. Тут проще будет потом вносить изменения, например по ключевым словам или уровнем событий, так как по умолчанию у меня стоит уровень 0, подразумевающий собирать все.

Теперь ждем сбоя, после которого вам нужно остановить ваше задание, можно из графического интерфейса

или же командой:

Далее нам необходим из данного архива получить дамп приложения и его лог, для анализа. Сделать, это можно командой:

Напоминаю, что у вам потребуется много места. Все начинается распаковка лога, вы будите видеть таскбар. В итоге из своих 3 ШБ, я получил файл дамп (dumpfile.xml) приложения 1С Предприятие в размере 41 ГБ и текстовый файл summary.txt

Получив такой огромный лог, я не смог его прочитать, утилита Microsoft Message Analyzer писала, что недостаточно памяти для продолжения выполнения программы. Пришлось уменьшать размер epl файла до 100 МБ и собирать меньшее количество провайдеров, исключив некоторые Microsoft и фиксировать только ошибки, уровня 2.

  • Critical — 1 0x1 Этот уровень соответствует критической ошибке, которая является серьезной ошибкой, вызвавшей серьезный сбой.
  • Error — 2 0x2 Этот уровень добавляет стандартные ошибки, которые указывают на проблему.
  • Informational — 4 0x4 Этот уровень добавляет информационные события или сообщения, которые не являются ошибками. Эти события могут помочь отследить прогресс или состояние приложения.
  • LogAlways — 0 0xffffffff Фильтрация уровней по событию не выполняется
  • Verbose — 5 0x5 Этот уровень добавляет длинные события или сообщения. Это вызывает все события, которые будут зарегистрированы.
  • Warning — 3 0x3 Этот уровень добавляет предупреждающие события (например, события, которые публикуются, потому что диск почти заполнен).
Читайте также:  При загрузке windows 0х000000ed

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


В итоге я получил небольшого вида файлы, которые чуть больше смогли ответить, в чем проблема связанная с появлением ошибки с ID 1000.

Данные файлы дампов приложения, вы можете открыть с помощью утилиты DebugDiag Analysis (https://www.microsoft.com/en-us/download/details.aspx?id=58210).

Откройте DebugDiag Analysis, выберите пункты:

  • crashHangAnalysis
  • MemoryAnalysis
  • KernelCrashHangAnalysys

После чего нажимаем кнопку «Add data Files».


После чего нажмите «Start Analysis»

На выходе вы получаете веб отчет, у меня выглядело вот так:

In 1cv8c.exe.10324.dmp the assembly instruction at wbase83!wbase::BaseWindow::windowProc+fe4 in C:\Program Files (x86)\1cv8\8.3.14.1630\bin\wbase83.dll from 1C-Soft LLC has caused an access violation exception (0xC0000005) when trying to read from memory location 0x13380954 on thread 0
Please follow up with the vendor 1C-Soft LLC for C:\Program Files (x86)\1cv8\8.3.14.1630\bin\wbase83.dll

Далее хотя бы видно, к какой базе данных было подключение, для этого есть ключ /IBName.

Далее вы увидите более детальную отладочную информацию по Thread — System ID, она может быть полезна для разработчиков 1С.

Thread 6 — System ID 118516

This thread is not fully resolved and may or may not be a problem. Further analysis of these threads may be required.

Оцените статью