1C-Company / 1c-edt-issues

Пространство для пожеланий и обсуждения ошибок 1C:Enterprise Development Tools
https://edt.1c.ru/
138 stars 9 forks source link

Edt повисла при сохранении общего модуля. Возможно из-за утечек памяти. #766

Open DmitryShvaika opened 1 year ago

DmitryShvaika commented 1 year ago

Описание ошибки

Edt повисла при сохранении общего модуля (на операции сборки) Когда модуль сохраняешь затем быстро меняешь и снова сохраняешь, запускается сборка и редактор блокируется. Обычно нормально работало, но в этом случае повисло. Возможно из-за нехватки памяти. Выделено 6 Гб проект небольшой - 270 Мб cf-ник Но когда редактируешь и сохраняешь большие модули с используемыми процедурами, то память потихоньку утекает - использование кучи (именно занятой памяти) приближается к пределу в 6Гб и обратно уже не возвращается даже при закрытии всех окон попытка очистить кучу (корзинка рядом с индикатором) ни к чему не приводит. Спасает регулярный рестарт Edt. В среднем каждые 2-3 часа при активной разработке.

Потребление процессора при этом составило 99.1% (8 ядер) Дамп потоков прилагаю threaddump.zip

Как воспроизвести

Удалось заснять и повторить процесс зависания при многократном редактировании одного общего модуля на 10-12 тыс строк (открыт только один общий модуль). Правим пару символов, сохраняем. Правим снова пару символов сохраняем. Так повторяем 200-500 раз пока вся память Edt в куче не закончится и Edt не повиснет Виде в виде анимационной Gif прилагаю в архиве

Остаток памяти почти повисло все.zip

Подозреваю, что это не утечки памяти, а неограниченное сохранение истории редактирования для отмены по Ctrl+Z. Наверное стоит ограничить историю, например 30-ю шагами. (как в Word - она то же не безгранична).

Важно - не закрывать окно редактора модуля на всем протяжении теста

Скриншоты

No response

Ожидаемое поведение

Edt не должна зависать

Лог рабочей области

не требуется

Версия 1С:EDT

2022.1.3

Операционная система

Windows

Установленные плагины

No response

Дополнительная информация

No response

NikitaMikhaylovSB commented 1 year ago

Скорее всего, это #720

DmitryShvaika commented 1 year ago

Скорее всего, это #720

Нет, сторонние плагины не использую - все по умолчанию Хорошо, что проекты ломаться перестали вроде

NikitaMikhaylovSB commented 1 year ago

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

DmitryShvaika commented 1 year ago

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

Возможно но в данном случае смотрел - оставалось совсем мало кучи из-за утечек. Просто отложил очередной рестарт и готово - висит причем процессор ест сильно - ничего делать почти не дает.

Решил сделать скрины по времени - как меняется куча. Перед каждым снимком нажимаю корзинку.

image

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

image

Еше пара правок и запуск ... и (речь идет про цифру 2239 М - память все куда-то съедается) image

Еще немного правок и осталось уже половина от доступной кучи (3 Гб из 6 Гб) image

Прошло еще немного времени, а память все тает (корзинку нажимал) image

В какой-то момент Edt сбросил память кучи. То есть куча не только медленно растет, а может и уменьшиться image

Однако время и утечки берут свое. И вот уже осталось всего 900 Мб свободной памяти кучи (корзинку нажимал) Тут edt начинает уже заметно сильно тормозить. Особенно когда свободной кучи осталось 500 Мб Но я решил довести эксперимент до полного зависания снова image

Но тут случилось чудо - когда я закрыл последнее одно окно редактора модуля и нажал корзинку - память почти полностью очистилась. На этот раз не зависло.... Неужели это один модуль столько держал памяти? Думаю, если не закрыть его а открыть еще парочку и было бы как раз повисание. Последние 3 картинки было открыто модулей от 3-7 всего. image

DmitryShvaika commented 1 year ago

Удалось заснять и повторить процесс зависания Edt при многократном редактировании одного модуля на 10-12 тыс строк Остаток памяти почти повисло все.zip