Bug 51035 - systemd-binfmt.filetrigger filetrigger is broken
Summary: systemd-binfmt.filetrigger filetrigger is broken
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: systemd (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Alexey Shabalin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-08-02 17:07 MSK by Dmitry Maksimenkov
Modified: 2024-08-07 17:42 MSK (History)
8 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dmitry Maksimenkov 2024-08-02 17:07:46 MSK
Инициализация hasher под aarch64 заканчивается ошибкой "child: handle_child: execve: /.host/entry: Exec format error"

Версии:
hasher-1.7.4-alt1
hasher-priv-2.0.14-alt1

Системы:
ALT Linux Workstation 10.2, обновлено до Sisyphus
ALT Linux Workstation K 10.3, обновлено до Sisyphus
ALT Linux Education 10.2, обновлено до Sisyphus
ALT Linux Server 10.2, обновлено до Sisyphus

Шаги воспроизведения:
# apt-get install hasher qemu-user-static-aarch64 qemu-user-static-binfmt-aarch64
# apt-repo rm all && cat > /etc/apt/sources.list << EOF
rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus aarch64 classic
rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic
EOF
# systemctl enable --now hasher-privd.service
# hasher-useradd <USER>
# su - <USER>
$ mkdir ~/hasher && hsh --init --target=aarch64 --with-qemu aarch64 -v

Ожидаемый результат: Инициализация заканчивается ошибкой

hasher-privd: child: handle_child: execve: /.host/entry: Exec format error
hsh-initroot: Failed to create RPM database.

Реальный результат: Инициализация без ошибок

Дополнительная информация:

Не воспроизводится в p10 на образах
ALT Linux Workstation 10.2
ALT Linux Workstation K 10.3
ALT Linux Education 10.2
ALT Linux Server 10.2

После перезагрузки ошибка не воспроизводится.
Comment 1 Dmitry Maksimenkov 2024-08-02 17:23:23 MSK
> После перезагрузки ошибка не воспроизводится.

После перезагрузки системы ошибка не воспроизводится.
Comment 2 Dmitry V. Levin 2024-08-03 10:50:22 MSK
По какой-то причине эффект от установки пакета qemu-user-static-binfmt-aarch64 проявился только после перезагрузки системы.
Comment 3 Ivan A. Melnikov 2024-08-03 11:20:32 MSK
Ошибка в файлтриггере /usr/lib/rpm/systemd-binfmt.filetrigger:

$ cat /usr/lib/rpm/systemd-binfmt.filetrigger
#!/bin/sh -e

[ -L /proc/1/root ] || exit 0

LC_ALL=C grep -E -qs '^/(lib|usr/lib|etc)/binfmt.d/.+\.conf' && systemd-binfmt >/dev/null 2>&1 ||:

systemd-binfmt находится не в $PATH, а в /usr/lib/systemd/, так что этот триггер не отрабатывает. Если удалить перенаправление stderr (которое, кстати, в любом случае лишнее), то при установке qemu-user-static-aarch64 можно увидеть:

/usr/lib/rpm/systemd-binfmt.filetrigger: line 5: systemd-binfmt: command not found
Comment 4 Ivan A. Melnikov 2024-08-03 11:28:45 MSK
Кстати, есть подозрение, что даже если корректно вызвать /usr/lib/systemd/systemd-binfmt, при обновлении, например, qemu-user-static-aarch64, старый бинарник останется висеть предзагруженным, что неправильно.

Так что я бы не вызывал эту утилиту напрямую, а делал просто systemctl restart systemd-binfmt.service.
Comment 5 Ivan A. Melnikov 2024-08-06 16:56:22 MSK
Аналогичная проблема, кстати, присутствует в макросе %binfmt_apply из rpm-macros-systemd-6-alt2
Comment 6 Ivan A. Melnikov 2024-08-06 16:57:36 MSK
(In reply to Ivan A. Melnikov from comment #5)
> Аналогичная проблема, кстати, присутствует в макросе %binfmt_apply из
> rpm-macros-systemd-6-alt2

... который, к счастью, нигде не используется. Может, удалить его?
Comment 7 Ivan A. Melnikov 2024-08-07 12:09:02 MSK
(In reply to Ivan A. Melnikov from comment #3)
> Ошибка в файлтриггере /usr/lib/rpm/systemd-binfmt.filetrigger:

Предлагаю чинить так:
https://git.altlinux.org/people/iv/packages/systemd.git?a=commitdiff;h=86f80e938b16aaf59fe8efdb0d2e9a80b86ce961

Собрано в задаче 354545, куда я также добавил последние исправления сборки без tmp2 (для riscv64 и loongarch64). Please review and approve.
Comment 8 Repository Robot 2024-08-07 17:42:25 MSK
systemd-1:255.10-alt2 -> sisyphus:

 Tue Aug 06 2024 Ivan A. Melnikov <iv@altlinux> 1:255.10-alt2
 - Fix systemd-binfmt filetrigger (ALT#51035).
 - Fix build w/o tmp2 (fixes FTBFS on loongarch64 and riscv64).
 - Make sure bootctl man page is present when there is
   the binary (backported upstream fix).