ew8bakandClaude Opus 5 3a5dced17c fix(tci): счётчик клиентских потоков переживал неудачный старт — Stop висел вечно
AcceptLoop делал InterLockedIncrement(FThreadCount) и следом создавал поток
безо всякой защиты. Не родился поток (память, лимит потоков в системе) —
исключение уходило из AcceptLoop и TTCIAcceptThread.Execute, accept-поток умирал
при FRunning = True, а счётчик оставался ≥ 1 навсегда. Ждут его на шаге 4
TTCIServer.Stop БЕЗ таймаута (и намеренно: следом освобождаются и клиенты, и сам
сервер), так что программа зависала и на выходе, и на любой смене настроек TCI.

Инкремент остался до старта — переносить его после Start нельзя, там гонка с
ThreadDone уходящего потока. Спавн обёрнут в try/except: счётчик возвращается
назад, сокет гасится Kill, клиент метится FClosed и достаётся тик-потоку
(ReapClients), как при обычном отключении. Объект потока уносит себя сам —
упавший конструктор сразу, поднявшийся по FreeOnTerminate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 16:06:53 +03:00
2026-03-09 18:48:24 +03:00
2026-07-15 10:21:23 +03:00
2026-06-25 12:58:07 +03:00
2026-03-09 18:48:24 +03:00
2026-03-05 16:19:26 +03:00
2026-08-05 16:11:57 +03:00
2026-05-24 16:29:13 +03:00
2026-03-05 16:19:26 +03:00
S
Description
No description provided
Readme
12 MiB
Languages
Pascal 96.3%
Python 3%
Shell 0.6%