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

Отладочный лог теряет сообщения #410

Closed ssvine closed 4 months ago

ssvine commented 4 months ago

В пулл реквесте исправляются проблемы:

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

Почему так? Одной из причин является то, что pthreads_cond_timedwait не работает. В этом можно быстро убедиться, поставив туда вместо timeout_millisecs значение INFINITE. Теперь таймаутов не будет, но из-за проблем с реализацией выполнение pthread_cond_signal не приведёт к возврату из pthreads_cond_timedwait, поэтому в файле лога сообщения будут отсутствовать. А если выйти из Far, то получим зависание. То есть фактически pthreads_cond_timedwait работает просто как таймер.

Помимо некорректной реализации базовых функций pthread, также есть недостатки у LogStream::InternalWrite и TinyLogImpl::MainLoop.

Основные правки: