Skip to content

Зависание при порционном чтении двоичных данных из TCP-соединения #1471

Description

@salexdv

Опишите ошибку
Изначально столкнулся с проблемой в winow @Nivanchenko
Некоторые post запросы оставались висеть в статусе pending

image

В процессе изучения проблемы выяснилось, что winow порционно вычитывает двоичные данные из объекта TCPСоединение.
До конца не разобрался, но похоже, что зависание происходит, если размер буфера, передаваемый для чтения меньше размера двоичных данных.
Если читать двоичные данные без указания размера буфера или увеличить размер буфера, то зависания не происходит.

Воспроизведение ошибки

Для воспроизведления проблемы на голом OneScript сделал следующий скрипт

ТСПСервер = Новый TCPСервер(8081);
ТСПСервер.Запустить();		
Сообщить("Сервера запущен");

РазмерБуфера = 1024;

Пока Истина Цикл

	Соединение = ТСПСервер.ОжидатьСоединения();
	Данные = Соединение.ПрочитатьДвоичныеДанные(РазмерБуфера); // <= тут зависает
	Сообщить(Данные.Размер());
	Соединение.ОтправитьСтроку("ok");

КонецЦикла;

Данные в порт кидаю так

image

Пример данных

{
    "file": "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
    "text": "222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"
}

При увеличении размера буфера для чтения зависания не происходит.
Во время зависания в диспетчере задач наблюдается такая картина

image

Окружение

  • ОС: Windows 10 Pro 10.0.19045
  • Версия: 1.9.2.10:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions