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
158 stars 52 forks source link

Интересное явление - NetBox падает первым из-за потери соединения с FTP, следом падает Far #97

Closed VictorVG closed 10 years ago

VictorVG commented 10 years ago

Среда: Win7 SP1, x86, .NET 4.5.1, Far 3.0.3793 + NetBox 2.1.34,281

Последовательность событий:

Соединились с FTP videoLan.org,из командной строки, keepalive=off, скачали файлы и оставили соединение в покое на час - полтора - ну, просто забыли про него. Приходим, видим одна панель локальная, вторая FTP, на переднем плане запрос пароля. Ладно он пустой, жмём ПКМ, сообщение о потере соединения, подтверждаем реконект, повторный запрос пароля, ПКМ и сбой. Фар выводит сообщение об ошибке в NetBox:

попытка чтения по адресу 0x0000001E смещение в ОЗУ 0x587D2E90 сбой в функции ProcessPanelEventW Модуль \NetBox.dll и предложение выгрузить - отладить. Решил отправить сбой в отладчик и там поглядеть что и как, но сам фар упал, причём он пытался восстановить нормальную работу. В логах последовательность записей об ошибке (во времени):

.NET 4 фиксирует ошибку:

Приложение: far.exe Версия платформы: v4.0.30319 Описание. Процесс был завершен из-за необработанного исключения. Сведения об исключении: код исключения c0000005, адрес исключения 5888FC71

А следом ОС пишет:

Имя сбойного приложения: far.exe, версия: 3.0.3793.0, отметка времени: 0x52effc54 Имя сбойного модуля: NetBox.dll_unloaded, версия: 0.0.0.0, отметка времени 0x52efe7e6 Код исключения: 0xc0000005 Смещение ошибки: 0x5888fc71 Идентификатор сбойного процесса: 0x1648 Время запуска сбойного приложения: 0x01cf21c0ed8624a7 Путь сбойного приложения: J:\Soft\far3\Far\far.exe Путь сбойного модуля: NetBox.dll Код отчета: fc91a718-8df9-11e3-96ba-00158312e664

и

Имя сбойного приложения: far.exe, версия: 3.0.3793.0, отметка времени: 0x52effc54 Имя сбойного модуля: NetBox.dll_unloaded, версия: 0.0.0.0, отметка времени 0x52efe7e6 Код исключения: 0xc0000005 Смещение ошибки: 0x587d1f63 Идентификатор сбойного процесса: 0x1648 Время запуска сбойного приложения: 0x01cf21c0ed8624a7 Путь сбойного приложения: J:\Soft\far3\Far\far.exe Путь сбойного модуля: NetBox.dll Код отчета: 00b8f22a-8dfa-11e3-96ba-00158312e664

Вот такое интересное событие. Вроде же недавно мы с чем то похожим имели дело? У меня сильные подозрения что первопричина явлений в .NET 4.5.1 который студия приволокла - думаю, что это он вызывает ошибки. На той машине ребята поставили 2013-ю студию и он с ней установился...

ctapmex commented 10 years ago

ошибка стабильно повторяется, но отладить ума не хватает. хитрая зараза. .net тут не причем. как воспроизвести.

  1. настраиваем ftp сервер на timeout 10 секунд
  2. подключаемся к серверу под ananymouse, с пустым паролем. ничего не делаем, ждем появления окна о переподключении
  3. нажимаем переподключиться, но не нажимаем ок в диалоге ввода пароля - ждем истечения таймаута, чтобы нас сбросило с сервера.
  4. нажимаем ok. появляется окно для переподключения. соглашаемся и в окне ввода пароля нажимаем Ok - упали.
VictorVG commented 10 years ago

Я то у себя в сети одну возможную причину сбоев прибрал - сгоревший роутер в пыльном углу чердака роутер вырубил сегмент и привёл с ошибкам в конфигурации DHCP в результате у чего в таблицу статических IP попали и те машины, что были на динамику настроены. Итогом стал большой интервал первичного опроса сети (я видел интервалы до 270 - 290 сек) и периодические ошибки сетевых подключений. В том же Network при этом выводится пустая панель в рабочей группе, при подключении из консоли сообщение получаем "Сетевой ресурс не найден ..." устраняемое только перезапуском всех хостов сети, иные подземные стуки....

Проблему устранил вручную очистив таблицу DHCP в роутере от недействительных записей ибо они ловятся легко из его админконсоли: мы видим МАС и назначенный ему IP, а имя хоста в таблице отсутствует - запись недействительная, удаляем её, сохраняем изменения и перезапускаем роутер (после внесения изменений в таблицы DHCP рестарт устройства обязателен!). Проблем с ним нет.

Похоже что одной из причин возникновения ошибки была неверная конфигурация роутера. Ну, от него я ныне избавился, поставил вместо TP-Link человеческий 3СОМ 3CREVF100-73-ME у которого и ума побольше, и вычислительной мощности для моей сети хватит с запасом.

AnrDaemon commented 10 years ago

Но это не повод падать в корку...

VictorVG commented 10 years ago

Мы пока знаем что происходит и при каких условиях, а дальше надо искать что на это дело срабатывает....

VictorVG commented 10 years ago

Собрал бинарники, проверил по предложенной ctapmex методике тестирования использовав как "подопытного кролика" ftp.mozilla.org.Получил нормальный диалог реконнекта, переподключился - работаем.

Спасибо огромное! Если никто не возражает, то я закрываю этот тикет как решённый.

P.S.

Мои бинарники собранные в VC++ v11 есть тут (если у меня почему-то линк не слетит, такое редко, но происходит :( ):

FarNetBox-2.1.34_Far3_x64.7z - http://yadi.sk/d/7jsc_7U3HNLNH FarNetBox-2.1.34_Far3_x86.7z - http://yadi.sk/d/V1jkTPZ5HNLXL

Все архивы на моих серверах (если не оговорено особо) сделаны с параметрами 7-Zip v9.30 Alpha, LZMA, SOLID, MAXIMUM