Разбор жалобы на падения стабла (13.10.2026) нашёл в нативе fork'а три
дефекта. Ни один из них не удалось связать с запуском без лога, но все
дешёвые и безопасные.
- ConnectionSocket::dispatchWssPayloads брал буфер из пула и после
Connection::onReceivedData не возвращал его: Connection копирует нужное
в свой restOfTheData и чужой буфер не забирает (FakeTLS-ветка делает
tlsBuffer->reuse()). Каждый принятый по WSS кадр оставлял невозвращённый
буфер, и на больших загрузках через WSS память процесса росла без предела.
- ConnectionsManager.cpp: logTlDebugUnmappedConstructor пишет в общий
std::map из сетевых потоков всех аккаунтов без блокировки, а вызывается
на каждый ответ Java-запроса. При включённом логировании и двух и более
аккаунтах это гонка по куче. Добавлен мьютекс.
- ConnectionSocket::onEvent разыменовывал currentWssTransport после
onConnected() и dispatchWssPayloads(), хотя закрытие сокета внутри них
сбрасывает транспорт. Добавлена проверка.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>