Open VictorVG opened 6 years ago
Наблюдение DV подтверждаю - с момента изменения настройки фризы фар-а не отмечены.
Но, если добавить модуль Folders то картинка меняется:
чтобы получить событие "ожидание внешнего приложения" хватит выйти из подменю и повозить курсором по десктопу. Вероятность сбоя 80%.
Судя по недавно обнаруженному dmex багу в comctl32.dll TaskDialogIndirect() which is triggered by sending the TDM_NAVIGATE_PAGE message from a non-gui thread to the main gui thread message loop for the dialog.
(в Process Hacker он вылез в виде падения плагинов при случайных нажатиях клавиш) возможно что причина зависания и падений FarHints при вызове GUI меню оболочки имеют сходную природу - больно хорошо данная гипотеза объясняет механизм возникновения проблемы...
Вот дамп последнего падения (стек был в БД, но я случайно потёр :( ) Far_mdmp-b5364_Git-d3469628e.7z (~ 79 Mb, сам дамп около 480 Мб - ОЗУ 16 Гб :))
Поскольку плагин до сих пор не починен, пришлось отключить его автовызов на мыша и KBD - теперь хоть far не вешает через раз.
Не знаю насколько верна гипотеза их конфликта, но явление с зависанием Far3 воспроизводится и у меня. Внешне проявляется так: в области Shell вызываю графическое меню EMenu, открываю одно из вложенных подменю, перенос курсора в другое окно и консоль фар переключается на экран 0 (Desktop), на экране вижу панель контекстного меню и раскрытое подменю, курсор индицирует состояние приложения "занято", при просмотре стека тредов в Process Hacker вижу, что соотношение числа циклов ЦП у треда FarHints.dll и основного треда Far 10 к 1 и выше. В это время Far не реагирует на команды управления и его задачу приходится завершать аварийно, часто с потерей данных. Сообщение ОС или РН о зависании приложения может не выводится, но раскрытое контекстное меню будет висеть на переднем плане и мешать пока задачу фар не закроешь. Сейчас как вспомогательный элемент стоит TortoiseGIT 2.60, показ эскизов документов отключил по сегодняшней подсказке с форума. Дальше посмотрим. До отключения сегодня трижды аварийно закрывал фар.