Расследование причин краха клиента 1С

Как понять, почему клиент 1С вдруг завершается аварийно.

На некоторых рабочих станциях пользователей периодически происходило падение клиента 1С. Совершенно произвольно в разное время с разным контекстом.

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

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:logs" history="24">
<event>
<eq property="Name" value="EXCP"/>
</event>
<event>
<eq property="Name" value="EXCPCNTX"/>
</event>
<property name="all">
</property>
</log>
</config>

При следующем падении нам потребовалось знать только время события, всю детализацию показал ТЖ. В нашем случае это оказалась рекурсия и переполнение стека.

07:15.863000-0,EXCP,2,process=1cv8c,OSThread=3592,DumpError=Created dump file: ,Context='
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();
ВнешняяОбработка.РабочийСтолТМЦ.Форма.АРМСотрудникаТМЦНовый.Форма : 812 : ЧтениеСобытийТелефонии();

И еще много много раз ...

Зная контекст проблемы, исправить ее не составило труда.

10 Comments

  1. PerlAmutor

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

    Сегодня ставили платформу на несколько машин, на некоторых из машин она падала с исключением в perform.dll после ввода логина и пароля пользователя. Переустанавливали другим дистрибутивом, та же самая версия платформы, но источник дистрибутива не известен, кем выложен в общую папку неизвестно, но проблема пропадала. Битый дистрибутив, который ставится без проблем?

    Кстати вопрос. Как можно настроить подобный ТЖ всем пользователям, коих больше 1000 не приходя к ним «в гости» в автоматическом режиме? Писать обработчик, который по файловой системе будет «шариться» при входе в программу?

    Reply
  2. Plotks2017

    (1) Именно удивление коллеги, что ТЖ можно на клиенте настроить и побудило написать на сайт.

    У наших админов есть скрипты(или средства администрирования) которые позволяют разливать файлы по клиентам, хз как.

    С точки зрения программиста 1с, я бы сделал именно так:

    Писать обработчик, который по файловой системе будет «шариться» при входе в программу
    Reply
  3. Xershi

    Написали говно код и запостили статью как его исправили, это пять!

    Reply
  4. Plotks2017

    (3) Вы разгадали мой хитрый план.

    Ну и как его исправить?

    Reply
  5. VmvLer

    (4) Пригласить студента который еще помнит как работать с рекурсией

    Reply
  6. plastyr

    Может быть вопрос тупой, но куда кидать файл ТЖ у пользователя?

    Reply
  7. Plotks2017

    (6) туда же куда и на сервере.

    Есть такая статья, но в ней не явно не написано, что на клиенте тоже можно это все делать.

    Путь обычно «C:Program Files1cv8inconf» или аналогичный в зависимости от платформы.

    Reply
  8. Sedaiko

    (1) Если 1000 клиентов — то уже однозначно есть AD с грамотными администраторами. Групповые политики — это сила

    Reply
  9. CheBurator

    по статье: интересно, почему на других клиентах ничего не падало..?

    Reply
  10. Plotks2017

    (9) Использовалась внешняя компонента для телефонии. Была кнопка «mute», путем экспериментов выяснили, что если на нее жмакнуть несколько раз очень быстро, то компонента начинала глючить и слать в 1с оооочень много событий «mute». Рекурсивный разбор массива событий уходил в себя.

    Проявлялось только у людей с «тремором» рук. Компоненту починить не представляется возможным, поэтому на «mute» поставили задержку в 1с. Проблема ушла.

    Reply

Leave a Comment

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