Bug 45991 - Долгий запуск ssh (-1 EBADF (Bad file descriptor))
Summary: Долгий запуск ssh (-1 EBADF (Bad file descriptor))
Status: NEW
Alias: None
Product: Branch p10
Classification: Unclassified
Component: openssh (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: Gleb F-Malinovskiy
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-04-28 15:35 MSK by vodazilla
Modified: 2023-05-19 17:34 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description vodazilla 2023-04-28 15:35:21 MSK
Команда ssh запрускается очень долго, если лимиты на openfiles увеличены. Команда ssh может запускаться дольше 5-10 секунд на слабых VM.

Воспроизведение ошибки:
1) Увеличить лимиты на nofile до 1048576 (как пример, можно выше\ниже) через редактирование файлов в /etc/security/limits.d/
1.2) Перелогинитсья, верифицировать новые лимиты с помощью ulimit -a
2) Запустить ssh -V не на самом быстром CPU. Команда будет выпролняться с существенной задежкой
3) Если сделать
strace -f  -e trace=open,openat,close,read,write,connect,accept  ssh -V

то видны миллионы сообщений вида
close(542636)                           = -1 EBADF (Bad file descriptor)
close(542637)                           = -1 EBADF (Bad file descriptor)
close(542638)                           = -1 EBADF (Bad file descriptor)

Видимо, идёт какая-та попытка открытия файла, и кол-во ошибок лимит_файлов-1. Из-за этого ssh запускается долго.

Возможно, ошибка есть и на других версиях Alt Linux, не проверял.

На других ОС, например, на Ubuntu, такого не наблюдается.
Comment 1 Vladislav Glinkin 2023-05-19 17:29:32 MSK
Ошибка имеет место быть.

Проверил на следующих платформах:
Workstation KDE 10.1
Server 10.1
Education KDE 10.1
Workstation 10.1
Education 10.1

Версии пакетов:
openssh-common-7.9p1-alt4.p10.1.x86_64
pam-1.5.2-alt1.x86_64

Ошибка воспроизводится. Незначительная задержка при выполнении ssh -V чувствуется при следующей конфигурации процессора:
# inxi -C
CPU:       Info: Single Core model: Common KVM bits: 64 type: MCP cache: L2: 16 MiB 
           Speed: 2100 MHz min/max: N/A Core speed (MHz): 1: 2100 

Шаги воспроизведения:
1) # vim /etc/security/limits.d/90-samba.conf
Поменять лимит файловых дескрипторов на 1048576 (и hard, и soft)
2) # reboot
3) Проверяем, что "жёсткий" лимит поменялся
 $ ulimit -n -H
4) $ ulimit -n
(Если выдаёт значение, отличное от 1048576, то выполнить $ ulimit -n 1048576)
5) Запустить $ strace -f  -e trace=open,openat,close,read,write,connect,accept  ssh -V

Фактический результат: Огромное количество ошибок вида
close(542636)                           = -1 EBADF (Bad file descriptor)
close(542637)                           = -1 EBADF (Bad file descriptor)
close(542638)                           = -1 EBADF (Bad file descriptor)

Ожидаемый результат: Ошибки отсутствует.

В sisyphus, на версии пакетов pam-1.5.3-alt1.x86_64 и openssh-common-8.6p1-alt3.x86_64 ошибка не воспроизводится.
Comment 2 Vladislav Glinkin 2023-05-19 17:34:58 MSK
Дополнительная информация:
Ошибки вида
close(542636)                           = -1 EBADF (Bad file descriptor)
close(542637)                           = -1 EBADF (Bad file descriptor)
close(542638)                           = -1 EBADF (Bad file descriptor)

присутствуют при запуске $ strace -f  -e
trace=open,openat,close,read,write,connect,accept  ssh -V без изменения лимита файловых дескрипторов