Menu

#146 PortaDev не всегда обрабатывает событие ExitFAR

WontFix
nobody
None
High
Defect
2020-04-16
2019-12-31
VictorVG
No

У плагина PortaDev отмечена особенность - если закрыть окно Far по крестику, то он не всегда обрабатывает событие ExitFAR (возможно что в таком случае оно не доходит до плагинов (?)) и его тред блокирует процесс завершения Far-а что проверяется достаточно легко:

1) пытаемся завершить задачу Far стандартными средствами ОС через Диспетчер процессов и результат в значительной части случаев будет отрицательный. Это проверялось через системный Task Manager и Process Hacker в том числе через вызов пункта Terminator (Мисклеонис - Терминатор) контекстного меню процесса Far.exe.
2) Принудительно завершаем тред плагина PortaDev - задача Far завершается без проблем.

Стал смотреть в чём причины, заметил что скорость записи на внешний HDD подключённый по USB 3.0 слишком мала - для файлов >= 500 Mb скорость записи не превышала 5 - 6 Мб/с, а после ОС минут двадцать чего-то ждала. Проверка записью без плагинов показала воспроизводимость явления, значит либо битый HDD, либо порты по току не тянут. HDD оказался полностью исправен, а вот с портами весело, и это при том, что к платам контроллеров подключено обязательное дополнительное питание. Покажу фотографии с STLabs U-750 (чип NEC uPD72020F) и встроенного в плату GigaByte Z68AP-D3 Etron EJ168A. Для измерений использован USB тестер Ruideng Tec. AT35 с прошивкой v1.7 .

С точки зрения схемотехники тут всё "нормально" и ожидаемо - выходные буфера микросхем не рассчитаны на токи нагрузки более 200 мА о чём говорит тот факт, что сопротивление их силовых ключей в открытом состоянии составляет 1,3 - 1,7 Ом что видно по падению напряжения. Кабели были проверены отдельно - сопростивление проводов линий +5V и GND в них ~0,05 Ом измерено прибором В7-38 в результате чего максимальное падение напряжения в цепи питания не превышает 0,1V при токе 1,0А. Решением проблемы "буфера не тянут" стало подключение HDD (для SSD придётся поступать аналогично там токи потребления устройства могут достигать 1,0А) через активный USB Hub с мощным БП питающим нагрузки.

Была правда у меня идея поставить в фар обработчик событий типа такого:

local PDId = "9BF0E19D-B943-4E6D-B7B0-D71E3DAF446A";
Event{
  id="D32F4C49-84A1-4630-8E87-067ED6F878E5";
  group="ExitFAR";
  description="Unload Portadev if Far exit";
  condition=function() return far.IsPluginLoaded(PDId) end;
  action=function()
   local Phndl;
   Phndl = far.FindPlugin(far.Flags.PFM_GUID,PDId)
   if not hNdl == nil then far.UnloadPlugin(Phndl) end
   Keys("F10")
 end;
}

но пока сырая и далее стартовых экспериментов не пошла, а посему не знаю как лучше поступить - обработчик отлаживать или стоит с алгоритмом плагина повозится чтобы исключить нужду в обработчике в принципе?

10 Attachments

Discussion

  • Vladimir Surguchev

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

     
  • VictorVG

    VictorVG - 2020-01-02

    В данный момент плагин не выгружается по событию ExitFAR что приводит к зависанию при завершении Far. Вплоть до системного сообщения Not responded.

     
  • Vladimir Surguchev

    • status: New --> WontFix
     

Anonymous
Anonymous

Add attachments
Cancel