MaxRusov / far-plugins

Automatically exported from code.google.com/p/far-plugins
49 stars 12 forks source link

Субплагин FarHints::Folders вызывает AV в ProcessSynchroEventW() #48

Open VictorVG opened 6 years ago

VictorVG commented 6 years ago

Victor_VG, Отправлено:13:25 17-01-2018

При наличии субплагина FarHints::Filders при дисковых операциях возникает AV в ProcessSynchroEventW() на b5128 x64 под Win7 SP1:

Исключительная ситуация

Исключение: 0xC0000005 - EXCEPTION_ACCESS_VIOLATION Подробности: Memory at 0000000000000008 could not be read Адрес: 0x0000000003733338 - ProcessSynchroEventW Источник: Функция: FarUnhandledExceptionFilter Модуль: Far.exe

стек

0x0000000003733338 ProcessSynchroEventW 0x000000000373A758 ProcessSynchroEventW 0x000000000373E2A0 ProcessSynchroEventW 0x000000000373C723 ProcessSynchroEventW 0x00000000041C7BFD _dbk_fcall_wrapper 0x000000000373A951 ProcessSynchroEventW 0x000000000373AAF3 ProcessSynchroEventW 0x000000000373ACD8 ProcessSynchroEventW 0x000000000372F040 _dbk_fcall_wrapper 0x0000000003724D0D 0x0000000076FE59CD BaseThreadInitThunk 0x000000007721A561 RtlUserThreadStart[/i]

виноват модуль Folders, но при его удалении зависания в FarHints.dll фиксируемые по статистике использования времени ЦП выводимой Process Hacker - тред FarHinst в таких ситуациях всегда использует на два - три порядка циклов ЦП чем все остальные треды вместе взятые, стали редкостью. Типовое значение ~ 1700000 циклов ЦП использует FarHinmts.dll и <= 12000 циклов ЦП остальные треды которых может быть до 20 шт. Предполагаю, что простая рекомпиляция плагина в очередной версии Дельфи не поможет - надо исправлять логику получения хинтов каталогов - похоже причина сбоев лежит в ней.

Ошибка воспроизводится в т.ч. в версии 1.22, например если на одной панели открыть каталог с файлами в MP4, на другой AVI и попробовать прочитать плагином MediaInfo данные потоков, то в значительном числе случаев при возврате из другого плагина получим зависание. Аналогичный эффект иногда возникает при вызове графического EMenu.

VictorVG commented 6 years ago

Смотрю по старым записям - а корни проблемы тянутся ещё с этого периода - https://github.com/MaxRusov/far-plugins/issues/46 .