Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка при закрытии #313

Open
xtemp09 opened this issue Jun 24, 2020 · 7 comments
Open

Ошибка при закрытии #313

xtemp09 opened this issue Jun 24, 2020 · 7 comments

Comments

@xtemp09
Copy link

xtemp09 commented Jun 24, 2020

Специально поставил MSVC на виртуальную машину, откомпибляндил Far, так что пишу как повторить ошибку.

  1. Подсоединиться по SFTP куда-нибудь
  2. Добиться исчезновения соединения (появления сообщения о переподключении)
  3. Закрыть Far

Ошибка:

0x7FEE4DE8A25 NetBox.dll!fmt::internal::BasicData::operator=
0x7FEE4F67E9F NetBox.dll!tinylog::TinyLog::Write
0x7FEE4F2BA60 NetBox.dll!tinylog::TinyLog::Write
0x7FEE4F2AA41 NetBox.dll!tinylog::TinyLog::Write
0x00077AEB9F3 ntdll.dll!RtlRestoreContext
0x7FEE4DF30DC NetBox.dll!fmt::internal::BasicData::operator=
0x7FEE4E01F92 NetBox.dll!ProcessPanelEventW
0x0013FD03BAE Far.exe!Plugin::ExecuteFunctionSeh<Plugin::ExecuteStruct<20,1>,ProcessPanelEventInfo * &> (C:\temp\FarManager-ci-v3.0.5625.1628\far\plclass.hpp:338)
0x0013FD0263E Far.exe!seh_invoke<<lambda_14bf981d6d2e4381e174749caf7cbfa5>,<lambda_011a09448d229acd9fb5df1cc73d9924>,<lambda_b674bb48975694a0ffc14b230655c340> > (C:\temp\FarManager-ci-v3.0.5625.1628\far\exception_handler.hpp:88)
0x0013FD00042 Far.exe!Plugin::ProcessPanelEvent (C:\temp\FarManager-ci-v3.0.5625.1628\far\plclass.cpp:961)
0x0013FC2960C Far.exe!FileList::ProcessPluginEvent (C:\temp\FarManager-ci-v3.0.5625.1628\far\filelist.cpp:6351)
0x0013FC2C959 Far.exe!FileList::UpdateIfChanged (C:\temp\FarManager-ci-v3.0.5625.1628\far\filelist.cpp:6846)
0x0013FCA4885 Far.exe!GetInputRecordImpl (C:\temp\FarManager-ci-v3.0.5625.1628\far\keyboard.cpp:929)
0x0013FCA50FE Far.exe!GetInputRecord (C:\temp\FarManager-ci-v3.0.5625.1628\far\keyboard.cpp:1119)
0x0013FCCAB77 Far.exe!Manager::ProcessMainLoop (C:\temp\FarManager-ci-v3.0.5625.1628\far\manager.cpp:631)
0x0013FCCA9E6 Far.exe!Manager::EnterMainLoop (C:\temp\FarManager-ci-v3.0.5625.1628\far\manager.cpp:617)
0x0013FCC2901 Far.exe!MainProcess (C:\temp\FarManager-ci-v3.0.5625.1628\far\main.cpp:313)
0x0013FCC6940 Far.exe!mainImpl (C:\temp\FarManager-ci-v3.0.5625.1628\far\main.cpp:752)
0x0013FCC6E40 Far.exe!wmain_seh (C:\temp\FarManager-ci-v3.0.5625.1628\far\main.cpp:786)
0x0013FCC6F57 Far.exe!<lambda_797f9b4d01764550640b73f73df2b8d6>::operator() (C:\temp\FarManager-ci-v3.0.5625.1628\far\main.cpp:822)
0x0013FCC6F9E Far.exe!seh_invoke<<lambda_797f9b4d01764550640b73f73df2b8d6>,<lambda_58096a58d19206686715aeeb96a234a7>,<lambda_4975ec3e3b192a559fe63b98ad6842a1> > (C:\temp\FarManager-ci-v3.0.5625.1628\far\exception_handler.hpp:88)
0x0013FCC6F16 Far.exe!main (C:\temp\FarManager-ci-v3.0.5625.1628\far\main.cpp:829)
0x0013FDAD9E0 Far.exe!__scrt_common_main_seh (d:\A01_work\6\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
0x0007797556D kernel32.dll!BaseThreadInitThunk
0x00077AD372D ntdll.dll!RtlUserThreadStart

Terminate the process (Y/N)?

Прилагаю лог NetBox. В данном случае подключение было к моему телефону.
Redmi.log

@VictorVG
Copy link

Я обратил внимание на строки 153 - 155 лога - хост запрашивает логин и пароль, но не получает их т.к. в этот момент судя по вашему описанию выполняется процедура завершения фар-а, и выделенная ОС процессу память содержит мусор, а т.к. плагин ждёт ввода с клавиатуры пытаясь прочитать входную очередь, то вполне естественно что он падает.

Точно так же в любой ОС поведёт себя любой дочерний процесс коли родительский процесс его задачи будет находится в состоянии завершения. Это классический случай "оператор выполнил некорректные действия и задача упала". Другое дело, что именно такой сценарий встречается крайне редко, а потому про защиту от него разработчики часто забывают , хотя наверное стоило бы добавить её в и в плагин и сам фар, но тут надо посмотреть "насколько вероятен данный сценарий?" чтобы не превратить защиту от случайности в самоцель на случай "а чтобы было!.

@xtemp09
Copy link
Author

xtemp09 commented Jun 25, 2020

Скорее всего, да. Этот сценарий имеет большущую вероятность, потому что соединение прекращается довольно часто, и я часто нажимаю на крестик в правом-верхнем углу фара.

@VictorVG
Copy link

@xtemp09

Тогда, раз есть такая возможность, то я бы посмотрел настройки сервера в самом телефоне, либо как вариант воспользовался Ghost Commander + SMBPlugin (у него GPL лицензия, но на каждой машине должны быть уникальный логин и пароль либо он не сможет с ней соединится - уже нарывался с планшетами и телефонами) либо воспользоваться X-plore File Manager (условно-бесплатный, без оплаты блокируется часть функций, но LAN/FTP доступны) - у него нет проблем с логинами и паролями, так что в плане замены громоздкого софта от производителя он удобнее.

@xtemp09
Copy link
Author

xtemp09 commented Jun 26, 2020

Причину прекращения соединения я знаю ― телефон отключает ES File Explorer для экономии энергии. Так же, видимо, он экономит Wi-fi.

3a список программ ― спасибо, посмотрю.

@VictorVG
Copy link

А, с ним фокус известен. Я в таких случаях свой на зарядку ставлю и батарея не садится.

@xtemp09
Copy link
Author

xtemp09 commented Jun 27, 2020

Я имел ввиду политику Android. (= Он отключает программы для энергосбережения, кроме тех, которым разрешено работать. Исправляется в два тыка, но я не хочу.

Когда автор дополнения рассмотрит этот баг?

@VictorVG
Copy link

Когда у него время будет. Пока он занят у самого есть вопросы, жду.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants