michaellukashov / Far-NetBox

SFTP/SCP/FTP/FTPS/WebDAV/S3 client for Far Manager 3 (http://farmanager.com/)
https://forum.farmanager.com/viewtopic.php?t=6317
GNU General Public License v2.0
159 stars 52 forks source link

Netbox периодически падает при нажатии кнопки Ctrl+R и при обновлении панели - выходит Exception #210

Open rufatpro opened 8 years ago

rufatpro commented 8 years ago
  1. Netbox периодически падает при нажатии кнопки Ctrl+R - выходит Exception Соединяюсь по sftp. Не стабильно, но периодически ( 1 из 10-20 раз) падает Far Manager по нажатию Ctrl+R. Проявляется на разных серверах.

    2. эта же ошибка:

    Far.exe - Application Error

The exception unknown software exception (0x40000015) occurred in the application at location 0x03937148.

выходит после редактирования и сохранения файла на удаленном сервере, т.е. нажимаю F2 далее Esc, файл сохранился на удаленном сервере, пошло обновление папки и выходит вышеуказанный Exception

  1. вот еще выскочило при переходе в верхнюю папку:

Far.exe - Application Error

The exception unknown software exception (0x40000015) occurred in the application at location 0x03827148.

  1. вот Exception при Ctrl+R:

Far.exe - Application Error

The exception unknown software exception (0x40000015) occurred in the application at location 0x03b57148.

VictorVG commented 8 years ago

Расшифровка ошибки проста - Windows (Kernel-Mode): {Fatal Application Exit} %hs +

Сбой произошёл по адресу 0x03b57148, а вот что в данный момент в памяти задачи, какая у вас ОС, версия NetBox, Far, какие скрипты и рунтаймы у вас установлены сюань. По крайней мере я угадать это не берусь. Самое большее что я могу - это помочь вам с расшифровкой ошибки.

Давайте попробуем другой вариант сборки (свой скопируйте в иной каталог): FarNetBox-2.3.0_Far3_x64.7z - v2.3.0.436, собрано в MS VC++2010.

P.S.

Если я правильно понимаю это ваш баг-репорт - http://bugs.farmanager.com/view.php?id=3203 ?

rufatpro commented 8 years ago

Баг репорт мой, но на него никто не реагирует, у меня far по 10-30 раз в день падает, уже замучился. Сборку попробую, можно ли мне еще для 32 битной версии Far-а архив?

Раньше у меня Netbox не падал, началось это где-то пол года назад, как обновил его. Последующие обновления не помогают, пробовал и ночные сборки, - толку нет.

Текущие версии Far: Far Manager, version 3.0 (build 4700) x86 и Far Manager, version 3.0 (build 4700) x64 ОС: Windows 7 и Windows Server 2003 SP2 Неважно какая ОС, Far падает на разных версиях ОС.

rufatpro commented 8 years ago

5) еще может упасть при выполнении команды shell, пример: cd /etc, после этого идет обновление папки.

viccpp commented 8 years ago

Та же проблема. Win7 x64, Far 3.0 (build 4700). Часто падает при обновлении панелей с смене директории при работе через SFTP. Чувство, как будто снова вернулся на Win98 - F2 нажимаю после каждого слова. Кроме того, не всегда показывается актуальное содержимое при операциях с файлами и возврате в посещённую директорию. Приходится нажимать Ctrl+R.

viccpp commented 8 years ago

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

rufatpro commented 8 years ago

Кроме того, не всегда показывается актуальное содержимое при операциях с файлами и возврате в посещённую директорию. Приходится нажимать Ctrl+R.

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

VictorVG commented 8 years ago

Пожалуйста - FarNetBox-2.3.0_Far3_x86.7z версия 2.3.0.436, собрано в VC++2010.

С самим Far - тут я бы порекомендовал его обновить до b4746 ибо за это время в нём устранено много ошибок способных всем кровь портить.

С внутренним кэшированием дерева - вот это я всегда включаю т.к. зачастую сервера обновляют дерево ранее чем сей кэш проснётся. Я с этим давно, ещё на первых версиях rush встретился и с тех пор на моих системах кэширование сетевых каталогов включается только для NFS, да и то на быстрых каналах. Иначе можно получить мягко скажем странные результаты. Причём как по вине железяк, так и в виде реакции людей, коим после объяснять людям что это они ошиблись, и порой выясняется что они и азов-то не знают, но будучи убеждены в своей правоте никого не хотят слушать.

Усё вместе Far, часть скриптов и плагинов можно тут отыскать Far3.

С отдельным багом для кэша - давайте сами для себя поймём что мы видим, а там и решение примем как разберёмся. А то заведём, а он не подтвердится и зачем он нам в таком случае?

При сбоях нам нужны дампы, стек вызовов, сообщение об ошибке. Ну, тут нам может помочь Process Hacker, а так как тут поминалась Server 2003, то на ней придётся использовать версию 2.38 Process_Hacker-2.38-bin.7z, c Вин7 и новее - v2.39 Stable / v3.0 Dev (документация в архивах! если не прочитать - будет куча ошибок в применении!). Он позволяет нам через контекстное меню процесса получить доступ к его низкоуровневым структурам в том числе и к стеку тредов и просмотру памяти, и т.д. Им можно глянуть с чем мы встретились. У меня есть кое какие мысли на сей счёт, но надо бы проверить.

rufatpro commented 8 years ago

Баг с кешированием действительно есть, я каждый день с этим сталкиваюсь по несколько десятков раз. При Upload-е файла на сервер плагин обновляет папку куда, залил файл. Но показывает предыдущее состояние панели до аплоада, можно даже видео снять чтобы быть убедительнее.

VictorVG commented 8 years ago

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

rufatpro commented 8 years ago

вот видео: https://youtu.be/8ckyp5C_Jns

VictorVG commented 8 years ago

А если увеличить тайм-аут ожидания на вкладке Соединение до 90 -120 сек? Сервера FTP обычно отвечают не быстро и дефолтный период 15 сек зашитый сейчас в код слишком мал для них, да и сервера обычно имеют защитный интервал от атаки UDP -флудом - если с запросы на установление соединения от клиента поступают до ответа на них сервера, то он считает это Flud-атакой и временно блокирует IP клиента , а при повторе атаки IP клиента автоматически блокируется сервером до вмешательства админа.

Так что я бы поставил тайм-аут FTP/SFTP примерно 90, а при очень загруженных серверах и все 120 секунд - если ответ сервера придёт раньше хорошо, нет - тогда произойдёт реконнект, да и если данные хранятся на удалённом домене через симлинки это так же увеличивает необходимое время ожидания ответа сервера.

rufatpro commented 8 years ago

Этот параметр и так был выставлен в 3600 (был подобран опытным путем ранее), так что это не влияет точно. Кроме того выделенные сервера, на которых проходят эти ошибки все под моим контролем и в параметрах sshd сервера нет защиты от такого типа флуда, блокировка по IP на стороне сервера наступает только через несколько попыток неудачного коннекта (перебора пароля).

Здесь идет речь именно об некорректном кешировании на стороне клиента. Еще раз повторюсь в более ранних версиях плагина не было подобных проблем.

rufatpro commented 8 years ago

по поводу:

С самим Far - тут я бы порекомендовал его обновить до b4746 ибо за это время в нём устранено много ошибок способных всем кровь портить.

где можно взять эту версию? вот здесь http://farmanager.com/download.php?l=ru версия 4744 а здесь: https://yadi.sk/d/oc1fPSIbhvvwT ver 3.0 build 4744 SVN r14346

VictorVG commented 8 years ago

Да, это моя опечатка, и в changelog.txt FarUE3 они есть, но это текст, в следующей ревизии устраню (надоело в changelog.txt Upd xxx писать :) ). Реально на ЯД лежит версия 3.0 b4744 r14346.

rufatpro commented 8 years ago

Буду тестировать несколько дней последнюю версию, позже отпишусь о результатах.

viccpp commented 8 years ago

Имя сбойного приложения: Far.exe, версия: 3.0.4700.0, отметка времени: 0x575beb99 Имя сбойного модуля: NetBox.dll, версия: 2.3.0.436, отметка времени 0x575bf7bb Код исключения: 0x40000015 Смещение ошибки: 0x0000000000325c86 Идентификатор сбойного процесса: 0x18cc Время запуска сбойного приложения: 0x01d1e7d4dc9fbf15 Путь сбойного приложения: C:\Program Files\Far Manager\Far.exe Путь сбойного модуля: C:\Program Files\Far Manager\Plugins\NetBox\NetBox.dll Код отчета: 7411e4e7-53df-11e6-8bd3-54ee756b65af

VictorVG commented 8 years ago

2underscores-vic

Тут уже известно. Официальная версия с FarManager.com ( http://www.farmanager.com/download.php?l=ru ) собирается MS VC++2015 и это вылезают "оптимизации и усовершенствования" компилятора сделанные Микрософт. :)

viccpp commented 8 years ago

От же твари... А ежели mingw плагин пересобрать, поможет? Или нужно и сам FAR пересобирать? И можно какие-нибудь ссылки на информацию про "оптимизации и усовершенствования" в MS VC++2015, касающиеся нашей темы?

rufatpro commented 8 years ago

Имеет ли место быть это: плагин Netbox использует Shared Memory для кеширования директорий. Если да, то скорее всего проблема в одновременном доступе к этой Shared Memory с разных экземпляров Far-а. Тогда это объясняет сразу 2 бага: 1. падение 2. неверное обновление директории.

VictorVG commented 8 years ago

Я собираю в VC++2010 и по словам w17 этот вариант стабильнее, чем собранный в VC++2015. Был эксперимент когда мы пытались спровоцировать крах плагина и это удалось только в сборке VC++2015.

В MinGW с ходу не соберётся - код под VC++ написан, да и если глянуть https://github.com/michaellukashov/Far-NetBox/blob/master/src/NetBox/CMakeLists.txt много интересного вылезет.

Имеет ли место быть это: плагин Netbox использует Shared Memory для кеширования директорий.

Как-то не смотрел ибо в голову не приходило поскольку у себя я кэширование каталогов давно выключил (сейчас причины не вспомню).

viccpp commented 8 years ago

у себя я кэширование каталогов давно выключил

Оно отключается в плагине? Как это сделать? В меню конфигурации плагина не нашёл такого

rufatpro commented 8 years ago

Оно отключается в плагине? Как это сделать? В меню конфигурации плагина не нашёл такого

В свойствах соединения (F4) наверху есть стрелка вправо в виде треугольника во вкладке "Directories" есть "Cache visited remote directories" и "Cache directory changes"

viccpp commented 8 years ago

Спасибо, нашёл. Попробую поработать без кеширования

VictorVG commented 8 years ago

И попробуйте вариант собранный в VC++2010 - если поглядеть что в VC++ 2015 Update 3 наменяли плохо становится....

viccpp commented 8 years ago

если поглядеть что в VC++ 2015 Update 3 наменяли плохо становится....

А ещё он отправку телеметрии включает в бинарник. Но все эти исправления давно уже пора внести в "самобытную" микрософтовскую интерпретацию Стандарта. Ломается, в основном, изначально неправильно написанный код. Ну и, конечно, правильный тоже временами попадает в эту мясорубку...

А где взять бинарник собранный VC++2010? Выше вижу только ссылку на 32-битную сборку.

VictorVG commented 8 years ago

Ну, с телеметрией многие поступают просто - отключают на уровне кода. Так сделано в Far3 (в CRT отрублено), Process Hacker - в этих я видел соответствующий код в сорцах, насколько я знаю и другие так же делают.

FarNetBox-2.3.0_Far3_x64.7z - простите, забыл с ходу ссылку дать. :(

У меня сейчас Far3 новый лежит - b4745 r14348 (FarUE3 x86, -test - x64, -latest x86 и x64 в архиве) в него уже включена новая UnRAR.dll v5.40.4.2036 (официальной сборки нет, это из unrarsrc-5.4.4.tar.gz собрана в VC++ 2015 Update 3 вызовов телеметрии не обнаружено).

rufatpro commented 8 years ago

Получается точно виноват блок кеширования в плагине, как его отключил вообще редко падал, может 1-2 раза за несколько дней. При включенном кешировании падал чаще. Тестировал на этой сборке ночной: Far30b4744.x86.20160727.msi

VictorVG commented 8 years ago

Ну, там версия 2.3.0.436 собранная VC++2015, так что вероятно ещё и он свою лепту вносит...

Попробуйте для сравнения связку b4747 r14352 (у меня выложена) с NetBox собранным в VC++2010 - я пока возможно им собираю.

rufatpro commented 8 years ago

Ну, там версия 2.3.0.436 собранная VC++2015, так что вероятно ещё и он свою лепту вносит...

это маловероятно, т.к. с включенным кешированием падает постоянно

VictorVG commented 8 years ago

Ну, будем надеяться, а я пока Process Hacker пересоберу - были опечатки в VERSION_INFO нового плагина. Устранили в рабочем порядке, пересоберу.

viccpp commented 8 years ago

После отключения кеширования, за два дня ни одного падения. Версию не менял. Протокол, правда, ещё сменил с SFTP на SCP

VictorVG commented 8 years ago

Значит в логике управления памяти кэша причина. Там копаться нужно.

rufatpro commented 8 years ago

однозначно проблема в кешировании, за несколько дней ни одного падения Far-а

VictorVG commented 8 years ago

Ясно. Видимо Миша там что изменит, так что я пока его включать не стану.