Bug 49773 - hasher-priv: slave: close: Bad file descriptor
Summary: hasher-priv: slave: close: Bad file descriptor
Status: CLOSED WORKSFORME
Alias: None
Product: Branch p10
Classification: Unclassified
Component: hasher-priv (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: qa-team@altlinux.org
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-03-24 15:13 MSK by Igor Chumichev
Modified: 2024-04-06 15:16 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 Igor Chumichev 2024-03-24 15:13:39 MSK
После обновления Alt Server c 10.1 на 10.2 hasher-priv стал вылетать с ошибкой hasher-priv: slave: close: Bad file descriptor
hsh-initroot: Unpacked /home/user/hasher/cache/chroot/chroot.cpio failed
Причем на Alt Workstation K 10.3 эта ошибка не проявляется.

Покопавшись в исходниках:
hasher-priv.git/hasher-priv/chrootuid.c
 134         /* Set close-on-exec flag on all non-standard descriptors. */
 135         cloexec_fds();
 136 
 137         block_signal_handler(SIGCHLD, SIG_BLOCK);
 138 
 139         if ((pid = fork()) < 0)
 140                 error(EXIT_FAILURE, errno, "fork");
 141 
 142         if (pid)
 143         {
 162         } else
 163         {
 164                 program_subname = "slave";
 165 
 166                 if (close(master)
 167                     || (!use_pty
 168                         && (close(pipe_out[0]) || close(pipe_err[0])))
 169                     || (x11_display && close(ctl[0])))
 170                         error(EXIT_FAILURE, errno, "close");

временно решил проблему комментированием строк 167 и 168.
Может это и не правильно, но по крайней мере все заработало.
Причину ошибки я вижу в следующем:
В строке 135 для всех файловых дескрипторов с номером > 3 устанавливается флаг close-on-exec. При запуске процесса-потомка этот флаг срабатывает и закрывает pipe, и при попытке повторного закрытия pipe в строке 168 вылезает вышеуказанная ошибка.
Возможно это не так, поскольку раньше все как-то работало.
Comment 1 Evgeny Shesteperov 2024-04-06 15:16:55 MSK
Для примера пересобрал neofetch.

Не воспроизвелось согласно https://www.altlinux.org/Hasher/Руководство.