Программа 1cv8c.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. Вот вам примеры текущих ошибок:
Имя сбойного модуля: 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
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:
События с кодом 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
Полное имя сбойного пакета:
Имя сбойного модуля: 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
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:
Имя сбойного модуля: 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
ИД процесса: 6394
Время запуска: 01d5476cf0acb640
Время завершения: 1
Путь приложения: C:\Program Files (x86)\1cv8\8.3.14.1630\bin\1cv8c.exe
ИД отчета: bbd779d9-b360-11e9-80e8-0050568dbadb
Видно, что из-за этой ошибки 1С так же повис проводник Windows:
ИД процесса: b450
Время запуска: 01d54769b60320f4
Время завершения: 60000
Путь приложения: C:\Windows\Explorer.EXE
ИД отчета: 1b4bb96b-b360-11e9-80e8-0050568dbadb
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:
Алгоритм поиска проблемы
Сразу скажу, что внятного ответа ни разработчики 1С ни техническая поддержка мне дали, все сказали, что у вас проблема с системой. И так, что я делал при поиске проблемы:
1. Вводил абсолютно свежий сервер с установленным Windows Server 2012 R2, эффекта не дало, ошибка все так же появилась
2. Удалил все неиспользуемые версии 1С, остались на текущий момент
3. Пробовал удалять кэш 1С, эффекта не дало
4. Переустановка самого клиента 1С, эффекта нет
Далее я решил попробовать собрать трассировку работы приложения по определенным провайдерам 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
-------------------------------------------------------------------------------
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}
Вам необходимо в текстовый файл сохранить именно GUID значения, по одному значению в строке. Далее этот файл нам будет нужен, при мониторинге. Создайте у себя для удобства отдельную папку. в которую сохраните файл со списком GUID. у меня это будет путь C:\tmp\provaders8.txt. Далее вам нужно определиться сколько вы готовы отдать под файл лога, учтите что он заполняется молниеносно, и сохраняется в сжатом виде в формате .etl, но если вы его потом распакуете, то например 50 МБ превратятся в 750, это нужно учитывать, но есть и обратная сторона нужно больше данных для диагностики, поэтом маленьким его делать так же нет смысла. Я в своем поиске сделаю его 3 ГБ.
В командной строке создаем новую трассировку в 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 Этот уровень добавляет предупреждающие события (например, события, которые публикуются, потому что диск почти заполнен).
Так же я параллельно создал ключи реестра, которые при сбое определенного приложения будут записывать его дамп.
В итоге я получил небольшого вида файлы, которые чуть больше смогли ответить, в чем проблема связанная с появлением ошибки с 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.
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 |
На этом моя борьба с зависание терминального сервера из-за ошибки 1С предприятия закончена, я как администратор тут уже ничего не могу поделать, надеюсь на разработчиков. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Щито?
Доброго вечера, в итоге удалось локализовать и устранить проблему и каким способом? С удовольствием прочитал данную статью, хочется узнать чем все закончилось.
В итоге перешли на новый релиз и проблема ушла
))есть вариант гараздо проще.ю запуск и анализ техжурнала 1С. И да частенько подобные ошибки прешаются сменой платформы