Программа 1cv8c.exe версии прекратила взаимодействие с Windows

Программа 1cv8c.exe версии прекратила взаимодействие с Windows

1cДобрый день! Уважаемые читайте и гости популярного 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. Вот вам примеры текущих ошибок:

События с кодом ID 1000 журнал Application Error: Имя сбойного приложения: 1cv8c.exe, версия: 8.3.14.1630, метка времени: 0x5c6e4c97
Имя сбойного модуля: wbase83.dll, версия: 8.3.14.1630, метка времени: 0x5c6e4bb7
Код исключения: 0xc0000005
Смещение ошибки: 0x00006895
Идентификатор сбойного процесса: 0x266c
Время запуска сбойного приложения: 0x01d547768b10a80e
Путь сбойного приложения: C:\Program Files (x86)\1cv8\8.3.14.1630\bin\1cv8c.exe
Путь сбойного модуля: C:\Program Files (x86)\1cv8\8.3.14.1630\bin\wbase83.dll
Идентификатор отчета: 3c6e27af-b37a-11e9-815f-0050568dcf1e
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:

1cv8c.exe, версия: 8.3.14.1630, метка времени: 0x5c6e4c97


События с кодом ID 1000 журнал Application Error: Имя сбойного приложения: EXCEL.EXE, версия: 16.0.4873.1000, метка времени: 0x5cffdabb
Имя сбойного модуля: EXCEL.EXE, версия: 16.0.4873.1000, метка времени: 0x5cffdabb
Код исключения: 0xc0000005
Смещение ошибки: 0x0002b78b
Идентификатор сбойного процесса: 0x2d80
Время запуска сбойного приложения: 0x01d546ec7c1c1a1f
Путь сбойного приложения: C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE
Путь сбойного модуля: C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE
Идентификатор отчета: bc1811e7-b2df-11e9-815f-0050568dcf1e
Полное имя сбойного пакета:

Имя сбойного приложения: EXCEL.EXE, версия: 16.0.4873.1000, метка времени: 0x5cffdabb

События с кодом ID 1000 журнал Application Error: Имя сбойного приложения: 1cv8.exe, версия: 8.3.14.1630, метка времени: 0x5c6e4d23
Имя сбойного модуля: rtrsrvc.dll, версия: 8.3.14.1630, метка времени: 0x5c6e4d21
Код исключения: 0xc0000005
Смещение ошибки: 0x00031042
Идентификатор сбойного процесса: 0xb37c
Время запуска сбойного приложения: 0x01d5388ac2b67852
Путь сбойного приложения: C:\Program Files (x86)\1cv8\8.3.14.1630\bin\1cv8.exe
Путь сбойного модуля: C:\Program Files (x86)\1cv8\8.3.14.1630\bin\rtrsrvc.dll
Идентификатор отчета: 87f52a22-a4da-11e9-815c-0050568dcf1e
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:

Имя сбойного приложения: 1cv8.exe, версия: 8.3.14.1630, метка времени: 0x5c6e4d23

События с кодом ID 1000 журнал Application Error: Имя сбойного приложения: mstsc.exe, версия: 6.3.9600.18980, метка времени: 0x5ab67164
Имя сбойного модуля: ntdll.dll, версия: 6.3.9600.19304, метка времени: 0x5c7f684f
Код исключения: 0xc0000374
Смещение ошибки: 0x00000000000f1cd0
Идентификатор сбойного процесса: 0x49f0
Время запуска сбойного приложения: 0x01d5387f8ab96e71
Путь сбойного приложения: C:\Windows\system32\mstsc.exe
Путь сбойного модуля: C:\Windows\SYSTEM32\ntdll.dll
Идентификатор отчета: d802c5d7-a472-11e9-815c-0050568dcf1e

Имя сбойного приложения: mstsc.exe, версия: 6.3.9600.18980, метка времени: 0x5ab67164

События с кодом ID 1002 журнал Application Error: Программа 1cv8c.exe версии 8.3.14.1630 прекратила взаимодействие с Windows и была закрыта. Чтобы узнать, имеются ли дополнительные сведения о проблеме, проверьте историю проблемы в Центре поддержки в панели управления.
ИД процесса: 6394
Время запуска: 01d5476cf0acb640
Время завершения: 1
Путь приложения: C:\Program Files (x86)\1cv8\8.3.14.1630\bin\1cv8c.exe
ИД отчета: bbd779d9-b360-11e9-80e8-0050568dbadb

Программа 1cv8c.exe версии 8.3.14.1630 прекратила взаимодействие с Windows и была закрыта

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

События с кодом ID 1002 журнал Application Error: Программа Explorer.EXE версии 6.3.9600.18231 прекратила взаимодействие с Windows и была закрыта. Чтобы узнать, имеются ли дополнительные сведения о проблеме, проверьте историю проблемы в Центре поддержки в панели управления.
ИД процесса: b450
Время запуска: 01d54769b60320f4
Время завершения: 60000
Путь приложения: C:\Windows\Explorer.EXE
ИД отчета: 1b4bb96b-b360-11e9-80e8-0050568dbadb
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:

Программа Explorer.EXE версии 6.3.9600.18231 прекратила взаимодействие с Windows и была закрыта

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

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

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

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

Утилита Logman.exe

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

ссылка на описание утилиты Logman.exe на Microsoft https://docs.microsoft.com/ru-ru/windows-server/administration/windows-commands/logman

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

logman query providers

logman query providers

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

Как определить PID процесса

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

logman query providers -pid 42424

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

Поставщик GUID
-------------------------------------------------------------------------------
Microsoft-IEFRAME {5C8BB950-959E-4309-8908-67961A1205D5}
Microsoft-Windows-AsynchronousCausality {19A4C69A-28EB-4D4B-8D94-5F19055A1B5C}
Microsoft-Windows-COM-Perf {B8D6861B-D20F-4EEC-BBAE-87E0DD80602B}
Microsoft-Windows-Crypto-BCrypt {C7E089AC-BA2A-11E0-9AF7-68384824019B}
Microsoft-Windows-Crypto-RSAEnh {152FDB2B-6E9D-4B60-B317-815D5F174C4A}
Microsoft-Windows-D3D9 {783ACA0A-790E-4D7F-8451-AA850511C6B9}
Microsoft-Windows-DNS-Client {1C95126E-7EEA-49A9-A3FE-A378B03DDB4D}
Microsoft-Windows-Documents {C89B991E-3B48-49B2-80D3-AC000DFC9749}
Microsoft-Windows-Dwm-Api {292A52C4-FA27-4461-B526-54A46430BD54}
Microsoft-Windows-KnownFolders {8939299F-2315-4C5C-9B91-ABB86AA0627D}
Microsoft-Windows-LDAP-Client {099614A5-5DD7-4788-8BC9-E29F43DB28FC}
Microsoft-Windows-Networking-Correlation {83ED54F0-4D48-4E45-B16E-726FFD1FA4AF}
Microsoft-Windows-PrintService {747EF6FD-E535-4D16-B510-42C90F6873A1}
Microsoft-Windows-RPC {6AD52B32-D609-4BE9-AE07-CE8DAE937E39}
Microsoft-Windows-RPC-Events {F4AED7C7-A898-4627-B053-44A7CAA12FCD}
Microsoft-Windows-Shell-Core {30336ED4-E327-447C-9DE0-51B652C86108}
Microsoft-Windows-SQM-Events {A97524F6-064C-4C4E-B74B-1ACC87C3700D}
Microsoft-Windows-TSF-msctf {4FBA1227-F606-4E5F-B9E8-FAB9AB5740F3}
Microsoft-Windows-UIAutomationCore {820A42D8-38C4-465D-B64E-D7D56EA1D612}
Microsoft-Windows-User Profiles General {DB00DFB6-29F9-4A9C-9B3B-1F4F9E7D9770}
Microsoft-Windows-UxTheme {422088E6-CD0C-4F99-BD0B-6985FA290BDF}
Microsoft-Windows-WinRT-Error {A86F8471-C31D-4FBC-A035-665D06047B03}
Microsoft-Windows-Winsock-NameResolution {55404E71-4DB9-4DEB-A5F5-8F86E46DDE56}
ODBC.1 {F34765F6-A1BE-4B9D-1400-B8A12921F704}
{012616AB-FF6D-4503-A6F0-EFFD0523ACE6} {012616AB-FF6D-4503-A6F0-EFFD0523ACE6}
{097D1686-4038-46BE-B551-10FDA0387165} {097D1686-4038-46BE-B551-10FDA0387165}
{2955E23C-4E0B-45CA-A181-6EE442CA1FC0} {2955E23C-4E0B-45CA-A181-6EE442CA1FC0}
{4E749B6A-667D-4C72-80EF-373EE3246B08} {4E749B6A-667D-4C72-80EF-373EE3246B08}
{4FE2C5BD-3BEA-465A-85D1-AD2719CFF4AF} {4FE2C5BD-3BEA-465A-85D1-AD2719CFF4AF}
{609151DD-04F5-4DA7-974C-FC6947EAA323} {609151DD-04F5-4DA7-974C-FC6947EAA323}
{63A3ADBE-9717-410D-A0F5-E07E68823B4D} {63A3ADBE-9717-410D-A0F5-E07E68823B4D}
{65CD4C8A-0848-4583-92A0-31C0FBAF00C0} {65CD4C8A-0848-4583-92A0-31C0FBAF00C0}
{6B6C257F-5643-43E8-8E5A-C66343DBC650} {6B6C257F-5643-43E8-8E5A-C66343DBC650}
{6E65C8FC-3CFE-412A-B793-D36D2185A831} {6E65C8FC-3CFE-412A-B793-D36D2185A831}
{80DF111F-178D-44FB-AFB4-5D179DE9D4EC} {80DF111F-178D-44FB-AFB4-5D179DE9D4EC}
{A2A3A1D0-AC4C-4A8F-BCD3-DB69FBA5AFFC} {A2A3A1D0-AC4C-4A8F-BCD3-DB69FBA5AFFC}
{A323CDC2-81B0-48B2-80C8-B749A221478A} {A323CDC2-81B0-48B2-80C8-B749A221478A}
{A3A7B70D-A430-4F3E-AC8B-32DC24E12D7E} {A3A7B70D-A430-4F3E-AC8B-32DC24E12D7E}
{A74EFE00-14BE-4EF9-9DA9-1484D5473302} {A74EFE00-14BE-4EF9-9DA9-1484D5473302}
{A74EFE00-14BE-4EF9-9DA9-1484D5473305} {A74EFE00-14BE-4EF9-9DA9-1484D5473305}
{BDA92AE8-9F11-4D49-BA1D-A4C2ABCA692E} {BDA92AE8-9F11-4D49-BA1D-A4C2ABCA692E}
{C9BF4A02-D547-4D11-8242-E03A18B5BE01} {C9BF4A02-D547-4D11-8242-E03A18B5BE01}
{CEC2553A-8961-4D34-92CA-AB2ECEF646C5} {CEC2553A-8961-4D34-92CA-AB2ECEF646C5}
{D1D7D72D-00D5-4E56-8BAC-23FAC0F9ED4E} {D1D7D72D-00D5-4E56-8BAC-23FAC0F9ED4E}
{E27950EB-1768-451F-96AC-CC4E14F6D3D0} {E27950EB-1768-451F-96AC-CC4E14F6D3D0}
{E870C196-B8CE-4C83-8C4E-DD5755C6D184} {E870C196-B8CE-4C83-8C4E-DD5755C6D184}
{EB7428F5-AB1F-4322-A4CC-1F1A9B2C5E98} {EB7428F5-AB1F-4322-A4CC-1F1A9B2C5E98}

Поставщики Windows для 1С

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

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

logman create trace -n 1C8 -f bincirc -max 3000 -ow -o C:\tmp\1C8.etl -ets

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

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

logman update 1C8 -pf C:\tmp\provaders8.txt -ets

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

l;ogman запуск задачи

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

наполнение файла .etl

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

logman query -ets

logman query -ets

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

Сеансы отслеживания событий

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

Остановка Сеансы отслеживания событий

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

logman stop -n 1C8 -ets

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

Tracerpt C:\tmp\1C8.etl

Получение дампа из .etl файла

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

Полученный лог из logman

Получив такой огромный лог, я не смог его прочитать, утилита 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 Этот уровень добавляет предупреждающие события (например, события, которые публикуются, потому что диск почти заполнен).

Выбор уровня логирования события

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

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

Файлы дампа 1с

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

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

  • crashHangAnalysis
  • MemoryAnalysis
  • KernelCrashHangAnalysys

Анализ дампа в DebugDiag Analysi

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

добавление дампов в DebugDiag Analysi
После чего нажмите "Start Analysis"

анализ дампа 1с с ошибкой ID 1000

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

WARNING - DebugDiag was not able to locate debug symbols for \wbase83.dll, so the information below may be incomplete.

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

In 1cv8c.exe.10324.dmp the assembly instruction at wbase83!wbase

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

ID 1000 /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.

  Source
ntdll!NtWaitForSingleObject+c
KERNELBASE!WaitForSingleObjectEx+99
KERNELBASE!WaitForSingleObject+12
core83!core::ISemaphoreBaseImpl::wait+26
1cv8c+e7b0
core83!core::Thread::runAndCatch+47
core83!core::Thread::threadMain+2f
core83!core::TextManager::restoreLabelsOnPage+34f7
ntdll!RtlpTpWorkCallback+ef
ntdll!TppWorkerThread+4f3
kernel32!BaseThreadInitThunk+24
ntdll!__RtlUserThreadStart+2f
ntdll!_RtlUserThreadStart+1b

Thread 0 - System ID 118120

  Source
ntdll!NtWaitForMultipleObjects+c
KERNELBASE!WaitForMultipleObjectsEx+cc
kernel32!WaitForMultipleObjects+19
kernel32!WerpReportFaultInternal+50b
kernel32!WerpReportFault+74
kernel32!BasepReportFault+19
KERNELBASE!UnhandledExceptionFilter+1f4
ntdll!__RtlUserThreadStart+54524
ntdll!_RtlUserThreadStart+1b

Thread 3 - System ID 118148

  Source
ntdll!NtWaitForMultipleObjects+c
KERNELBASE!WaitForMultipleObjectsEx+cc
combase!WaitCoalesced+73 [d:\blue\com\published\ comutils\coalescedwait.cxx @ 70 + 20]   d:\blue\com\published\comutils\coalescedwait.cxx @ 70 + 20
combase!CROIDTable::WorkerThreadLoop+4c [d:\blue\ com\combase\dcomrem\refcache.cxx @ 1480]   d:\blue\com\combase\dcomrem\refcache.cxx @ 1480
combase!CRpcThread::WorkerLoop+433 [d:\blue\com\ combase\dcomrem\threads.cxx @ 260 + 2]   d:\blue\com\combase\dcomrem\threads.cxx @ 260 + 2
combase!CRpcThreadCache:: RpcWorkerThreadEntry+16 [d:\blue\com\combase\ dcomrem\threads.cxx @ 67]   d:\blue\com\combase\dcomrem\threads.cxx @ 67
kernel32!BaseThreadInitThunk+24
ntdll!__RtlUserThreadStart+2f
ntdll!_RtlUserThreadStart+1b

ID 1000

На этом моя борьба с зависание терминального сервера из-за ошибки 1С предприятия закончена, я как администратор тут уже ничего не могу поделать, надеюсь на разработчиков. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *