Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Нужен совет по поиску проблемы падения 1С (число прочтений - 5689 )
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Нужен совет по поиску проблемы падения 1С
14. Февраля 2011 :: 13:33
Печать  
Наверное все рано или поздно сталкивались с этой проблемой - 1С-на падает при выходе..
Так как состав ВК давно устоялся и если не брать в расчет чисто софтовые проблемы, то скорее всего, как мне кажется, проблема связана с неправильной последовательностью инициализации/удаления объектов классов.
Хотел спросить - кто каким образом ищет подобные проблемы, может у кого есть ценные наработки/мысли в этом направлении?
  

error_004.jpg ( 14 KB | Загрузки )
error_004.jpg
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #1 - 14. Февраля 2011 :: 13:57
Печать  
Список ВК, их версии, размеры?
Главное - получить хоть какую-то повторяемость бага, дальше уже легче.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #2 - 14. Февраля 2011 :: 14:04
Печать  
Согласен, что если бы можно было воспроизвести, то уже было бы проще..
Тут скорее всего проблема не в ВК (их версии давно не меняются, набор устоявшийся, используемый функционал вроде тоже), а кривости моих рук..
Вот и подумалось - вот бы придумать какой-нибудь механизм, типа диспетчера классов, что бы проще было отслеживать, какие объекты были созданы, какие убиты, тогда было бы проще найти, где проблема..
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #3 - 14. Февраля 2011 :: 15:10
Печать  
В общем то суть моего вопроса не в том, как искать проблему, а в том, какие можно было бы применить для этого приемы..

Например сделать подсистему логирования создания/уничтожения объектов классов, тогда можно было бы увидеть, какие объекты правильно не уничтожаются..
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Нужен совет по поиску проблемы падения 1С
Ответ #4 - 14. Февраля 2011 :: 15:18
Печать  
Ты случаем мои "наработки" там не используешь? Улыбка
Я использую ИДу (IDA PRO), если что-то нужно посмотреть.

  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #5 - 14. Февраля 2011 :: 15:21
Печать  
Не, на боевой dynwrapex не используется (пока Улыбка)
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Нужен совет по поиску проблемы падения 1С
Ответ #6 - 14. Февраля 2011 :: 15:24
Печать  
CaBaT писал(а) 14. Февраля 2011 :: 15:21:
Не, на боевой dynwrapex не используется (пока Улыбка)


а то может мой косяк  Подмигивание
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #7 - 14. Февраля 2011 :: 15:24
Печать  
chessman писал(а) 14. Февраля 2011 :: 15:18:
Я использую ИДу (IDA PRO), если что-то нужно посмотреть.


Если бы удалось стабильно воспроизвести проблему, все было бы намного проще..
Тогда бы и без ИД-ы наверное удалось обойтись..

Тут сложность в том, что куча пользователей работает в базе, у некоторых периодически при закрытии 1С-на падает..
При каких обстоятельствах выяснить можно, но довольно сложно..
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Нужен совет по поиску проблемы падения 1С
Ответ #8 - 14. Февраля 2011 :: 15:32
Печать  
Если падает на определенных компах, поставь туда Студию, она будет отладчиком по умолчанию, тогда хотя бы сможешь посмотреть какая инструкция вызвала ошибку.
Судя по всему, вызывалась какая-то виртуальная функция.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #9 - 14. Февраля 2011 :: 15:33
Печать  
Да кто ж мне студию даст ставить где попало Улыбка
Пока буду пытаться понять, при каких обстоятельствах падает..

Из компонент у меня на боевой базе только 1cpp, formex, 1sqlite, tabledoc
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Нужен совет по поиску проблемы падения 1С
Ответ #10 - 14. Февраля 2011 :: 15:39
Печать  
CaBaT писал(а) 14. Февраля 2011 :: 15:33:
Да кто ж мне студию даст ставить где попало Улыбка


а чем тебе Express-вариант не нравится?  таки бесплатно Улыбка
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #11 - 15. Февраля 2011 :: 02:47
Печать  
CaBaT писал(а) 14. Февраля 2011 :: 15:24:
Тут сложность в том, что куча пользователей работает в базе, у некоторых периодически при закрытии 1С-на падает..
При каких обстоятельствах выяснить можно, но довольно сложно..

Выскажу свое мнение, сложившееся из наблюдений, но подтвердить сказанное не могу:
1С сама падает при интенсивной работе, а использование классов и ВК только чуть ускоряют это падение... просто сама технология движка несколько устарела и не совсем совместима с современным железом и софтом, включая саму винду...

Выводы сделаны из попыток отслеживания моментов падения, но закономерностей выявлено не было, т.к. при абсолютно тех же последовательностях действия 1С падает в разные моменты времени...
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #12 - 15. Февраля 2011 :: 06:18
Печать  
Dmitry The Wing писал(а) 15. Февраля 2011 :: 02:47:
Выскажу свое мнение, сложившееся из наблюдений, но подтвердить сказанное не могу:
1С сама падает при интенсивной работе, а использование классов и ВК только чуть ускоряют это падение...

вот ведь в чем проблема - до того, как я в базу внедрил эти ВК, она так часто не падала..
(ну во всяком случае, со слов очевидцев)
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Нужен совет по поиску проблемы падения 1С
Ответ #13 - 15. Февраля 2011 :: 08:29
Печать  
Можешь проделать нудную и утомительную работу:
в каждом классе дописать конструктор + деструктор + локальную переменну "ГУИД_Объекта":

В конструкторе - ГУИДишь идентификатор объекта, пишешь в лог имя класса + ГУИД объекта
в деструкторе - аналогично.

Для классов-наследников, в общем-то, писать необязательно.

Потом сравниваешь, объекты каких классов существовали при падении.

PS можно логать сразу в таблицу скуля: гуид объекта (чар36), Создание (датетайм), Уничтожение (датетайм, дефаул = 17530101)
конструктор инсертит, деструктор апдейтит
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #14 - 15. Февраля 2011 :: 08:41
Печать  
Ну в общем то ход моих мыслей был в этом же направлении..
Просто подумалось, что может еще какие варианты в голову не пришли..
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #15 - 15. Февраля 2011 :: 10:16
Печать  
chessman писал(а) 14. Февраля 2011 :: 15:39:
а чем тебе Express-вариант не нравится?  таки бесплатно Улыбка

имеешь ввиду это?
http://www.hex-rays.com/idapro/idadownfreeware.htm
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Нужен совет по поиску проблемы падения 1С
Ответ #16 - 15. Февраля 2011 :: 11:10
Печать  
CaBaT писал(а) 15. Февраля 2011 :: 10:16:
chessman писал(а) 14. Февраля 2011 :: 15:39:
а чем тебе Express-вариант не нравится?  таки бесплатно Улыбка

имеешь ввиду это?
http://www.hex-rays.com/idapro/idadownfreeware.htm


Я про студию говорил.
У IDы тоже есть бесплатный вариант, не знаю только насколько он урезан.
Хотя в данном случае, идея с логированием, более эффективна.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #17 - 15. Февраля 2011 :: 13:16
Печать  
Satans Claws писал(а) 15. Февраля 2011 :: 08:29:
Можешь проделать нудную и утомительную работу:
в каждом классе дописать конструктор + деструктор + локальную переменну "ГУИД_Объекта":

Множественный ООП никто не отменял.
ВСЕ классы делаем наследником от одного класса - ЛоггерОбъектов, в нем выполняем нужные действия.
Так что не очень-то и нудно Улыбка - меняем только часть файлов.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #18 - 15. Февраля 2011 :: 13:21
Печать  
В чистой 1С нельзя открыть/закрыть слишком много окон, т.е. открываем\закрываем окна, течет память GDI, при достижении предельного числа GDI процесс 1С77 падает.
Эффект был исследован в одной из веток про GDI, адрес не помню.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #19 - 15. Февраля 2011 :: 13:46
Печать  
artbear писал(а) 15. Февраля 2011 :: 13:21:
В чистой 1С нельзя открыть/закрыть слишком много окон, т.е. открываем\закрываем окна, течет память GDI, при достижении предельного числа GDI процесс 1С77 падает.
Эффект был исследован в одной из веток про GDI, адрес не помню.

Об этом знаю, но думаю, тут не этот случай - падает не в процессе работы, а при закрытии..
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #20 - 15. Февраля 2011 :: 13:59
Печать  
Для того, что бы внести ясность, почему я думаю, что проблема связана с инициализацией/разрушением объектов классов, опишу схему, которая у меня используется.

Есть набор классов, который представляет из себя по сути библиотеку служебных процедур/функций, которые сгруппированы по назначению. (например на картинке - группа классов "Система").

В свою очередь классы могут использовать методы других классов, а что бы не плодить в памяти одинаковые экземпляры классов, был придуман специальный диспетчер, через который идет обращение к классам, который при необходимости создает экземпляры классов и сохраняет в своем списке.
Это было необходимо для того, что взаимосвязь классов стала сложной, а при обращении через диспетчер достигается автоматическое создание экземпляров классов по мере необходимости.

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

Пока не знаю, как здесь лучше поступить, буду думать..
Хотя до недавнего времени таких проблем у меня не было, правда тогда была другая база и другая специфика (много баз, по одному пользователю, а сейчас - одна база, много пользователей)
  

_______005.jpg ( 75 KB | Загрузки )
_______005.jpg
Наверх
 
IP записан
 
Thor
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 82
Зарегистрирован: 12. Июля 2006
Re: Нужен совет по поиску проблемы падения 1С
Ответ #21 - 15. Февраля 2011 :: 18:53
Печать  
Скорей всего проблема в том, что объекты не разрушаются при закрытии контекста, в котором они были созданы. Причина может быть в циклических ссылках объектов друг на друга или на себя. По крайне мере у меня так было. Если не очистил ссылку - то объект не разрушается и при завершении работы 1С-ка 100%-но вылетает.
В моем случае помогла система логирования создания и уничтожения объектов.
  
Наверх
ICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #22 - 16. Февраля 2011 :: 06:41
Печать  
Один такой косяк уже нашел, вчера поправил - будем посмотреть..

Что было:
Не разрушался экземпляр класса-перехватчика, причем довольно глупо - в классе создавался объект "Таймер" и задавался обработчик в классе-перехватчике.

Добавил в обработчике события "ПриЗакрытии" принудительное удаление обработчика в объекте "Таймер" - деструктор стал срабатывать.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #23 - 18. Февраля 2011 :: 14:33
Печать  
Похоже проблема в другом месте, так как похоже опять у кого то упало..
Будем искать..
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Нужен совет по поиску проблемы падения 1С
Ответ #24 - 28. Февраля 2011 :: 09:35
Печать  
С помощью одного сознательного сотрудника удалось таки поймать проблему.

Если кратко, то суть была в том, что есть один внешний отчетик, который отображает график событий, так вот в нем был обработчик события "ПриАктивацииОкна", в котором производилось обновление данных графика.

Если был открыт этот отчет и еще любое окно (справочник, журнал и т.д.) поверх него и при этом 1С закрыть, то происходило срабатывание этого события, в то время как объекты, используемые в отчете могли быть уже разрушены..

Естественно, если отчет был на переднем плане, или открыт только он, или закрыт перед завершением 1С, то проблем не было..
Вот ведь как бывает.. Озадачен
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Нужен совет по поиску проблемы падения 1С
Ответ #25 - 01. Марта 2011 :: 06:25
Печать  
Хмм (с)
Мне всегда казалось, что 1С сначала закрывает все открытые формы, и лишь потом передает управление в "ПриЗавершенииРаботыСистемы"...
был неправ.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать