Расследование причин краха клиента 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 не будет опубликован. Обязательные поля помечены *