Имею такую машину: [root@tewi ~]# uname -a Linux tewi 5.4.163-elbrus-def-alt2.23.1 #1 SMP Fri Dec 3 17:11:53 UTC 2021 e2k GNU/Linux [root@tewi ~]# cat /etc/os-release NAME="ALT Server" VERSION="10.0" ID=altlinux VERSION_ID=10.0 PRETTY_NAME="ALT Server 10.0 (FalcoRusticolus)" ANSI_COLOR="1;33" CPE_NAME="cpe:/o:alt:server:10.0" BUILD_ID="ALT Server 10.0" HOME_URL="https://basealt.ru/" BUG_REPORT_URL="https://bugs.altlinux.org/" Используются репы sisyphus-e2k. Имеется также сетевой ресурс: [root@tewi ~]# mount -t nfs satori:/i-data/9a03a6a1/nfs/shared /tmp/0 [root@tewi ~]# ls /tmp/0 demodisks hdd_images install_images lcc_packages lintel_images patchouli rtc_packages server_backups tmp [root@tewi ~]# umount /tmp/0 При попытке доступа к нему через autofs, этот autofs крашится: [root@tewi ~]# systemctl restart autofs [root@tewi ~]# systemctl status autofs ● autofs.service - Automounts filesystems on demand Loaded: loaded (/lib/systemd/system/autofs.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2022-05-25 21:02:03 UTC; 5s ago Main PID: 140748 (automount) Tasks: 4 (limit: 8561) Memory: 2.7M CPU: 230ms CGroup: /system.slice/autofs.service └─140748 /usr/sbin/automount --systemd-service --dont-check-daemon мая 25 21:02:03 tewi systemd[1]: Starting Automounts filesystems on demand... мая 25 21:02:03 tewi systemd[1]: Started Automounts filesystems on demand. [root@tewi ~]# ls /auto/satori ^C [root@tewi ~]# systemctl status autofs ● autofs.service - Automounts filesystems on demand Loaded: loaded (/lib/systemd/system/autofs.service; enabled; vendor preset: disabled) Active: failed (Result: signal) since Wed 2022-05-25 21:03:18 UTC; 19s ago Process: 140748 ExecStart=/usr/sbin/automount $OPTIONS --systemd-service --dont-check-daemon (code=killed, signal=SEGV) Main PID: 140748 (code=killed, signal=SEGV) CPU: 1.129s мая 25 21:02:03 tewi systemd[1]: Starting Automounts filesystems on demand... мая 25 21:02:03 tewi systemd[1]: Started Automounts filesystems on demand. мая 25 21:03:18 tewi systemd[1]: autofs.service: Main process exited, code=killed, status=11/SEGV мая 25 21:03:18 tewi systemd[1]: autofs.service: Failed with result 'signal'. мая 25 21:03:18 tewi systemd[1]: autofs.service: Consumed 1.129s CPU time. Конфиги выглядят так: [root@tewi ~]# cat /etc/nsswitch.conf | grep auto automount: files [root@tewi ~]# cat /etc/auto.master | grep -v '^#' | grep -v '^[[:space:]]*$' /auto /etc/auto.auto [root@tewi ~]# cat /etc/auto.auto | grep -v '^#' | grep -v '^[[:space:]]*$' patchouli -rw,intr,nfsvers=3 satori:/i-data/9a03a6a1/nfs/shared/patchouli/data/NAS_Public satori -rw,intr,nfsvers=3 satori:/i-data/9a03a6a1/nfs/shared На x86_64 (это тоже sysyphus, но x86_64) при этом всё работает: sekibanki ~ # uname -a Linux sekibanki 5.4.154-std-def-alt1 #1 SMP Sun Oct 17 11:23:13 UTC 2021 x86_64 GNU/Linux sekibanki ~ # cat /etc/os-release NAME="ALT Server" VERSION="10.0" ID=altlinux VERSION_ID=10.0 PRETTY_NAME="ALT Server 10.0 (FalcoRusticolus)" ANSI_COLOR="1;33" CPE_NAME="cpe:/o:alt:server:10.0" BUILD_ID="ALT Server 9.2" HOME_URL="https://basealt.ru/" BUG_REPORT_URL="https://bugs.altlinux.org/" sekibanki ~ # ls /auto/satori demodisks hdd_images install_images lcc_packages lintel_images patchouli rtc_packages server_backups tmp sekibanki ~ # P.S. Перенесено из https://bugs.mcst.ru/bugzilla/show_bug.cgi?id=4886
@mike, видимо это к вам
Илья, могу подготовить стенд -- посмотрите?
Запилил стенд. Доступ по запросу дан к машинам lyrica и lunasa по ssh с авторизацией по ключу. У пользователя есть права sudo (он в группе wheel). lyrica - nfs-сервер, на котором расшарен каталог /export: lyrica ~ # grep -v '^#' /etc/exports /export *(rw,async,no_subtree_check,no_root_squash) lyrica ~ # ls /export/auto dir lyrica ~ # lunasa - клиент, на котором autofs настроен монтировать каталог lyrica:/export/auto в /mnt/auto/lyrica: lunasa ~ # grep -v '^#' /etc/auto.master /mnt/auto /etc/auto.auto lunasa ~ # cat /etc/auto.auto lyrica -rw,intr,nfsvers=4 lyrica:/export/auto lunasa ~ # Воспроизведение ошибки (после sudo bash): lunasa ~ # systemctl restart autofs lunasa ~ # systemctl status autofs ● autofs.service - Automounts filesystems on demand Loaded: loaded (/lib/systemd/system/autofs.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2022-10-22 03:40:09 +06; 22s ago Main PID: 16946 (automount) Tasks: 5 (limit: 19146) Memory: 3.2M CGroup: /system.slice/autofs.service └─16946 /usr/sbin/automount --systemd-service --dont-check-daemon окт 22 03:40:09 lunasa systemd[1]: Starting Automounts filesystems on demand... окт 22 03:40:09 lunasa systemd[1]: Started Automounts filesystems on demand. lunasa ~ # ls /mnt/auto/lyrica # Оно подвиснет, секунд через 5 можно нажимать Ctrl+C ^C lunasa ~ # systemctl status autofs ● autofs.service - Automounts filesystems on demand Loaded: loaded (/lib/systemd/system/autofs.service; enabled; vendor preset: disabled) Active: failed (Result: signal) since Sat 2022-10-22 03:40:46 +06; 10s ago Process: 16946 ExecStart=/usr/sbin/automount $OPTIONS --systemd-service --dont-check-daemon (code=killed, signal=SEGV) Main PID: 16946 (code=killed, signal=SEGV) окт 22 03:40:09 lunasa systemd[1]: Starting Automounts filesystems on demand... окт 22 03:40:09 lunasa systemd[1]: Started Automounts filesystems on demand. окт 22 03:40:46 lunasa systemd[1]: autofs.service: Main process exited, code=killed, status=11/SEGV окт 22 03:40:46 lunasa systemd[1]: autofs.service: Failed with result 'signal'. lunasa ~ # При этом сервер доступен, nfs-шара монтируется: lunasa ~ # ls /mnt/nfs lunasa ~ # mount -t nfs -o rw,intr,nfsvers=4 lyrica:/export/auto /mnt/nfs lunasa ~ # ls /mnt/nfs dir lunasa ~ # umount /mnt/nfs lunasa ~ #
include/linux/auto_fs.h в исходниках autofs: #if defined(__ia64__) || defined(__alpha__) /* pure 64bit architectures */ typedef unsigned long autofs_wqt_t; #else typedef unsigned int autofs_wqt_t; #endif Должно быть добавлено defined(__e2k__) в список 64-бит архитектур. Из-за этого поля оказываются смещены и происходит ошибка.
Created attachment 11747 [details] [PATCH] auto_fs.h: added e2k as a pure 64-bit arch Илья при отладке обнаружил, что ядро и indirect.c::pending_mutex_lock() задействуют по факту разные ABI, в результате чего (pkt->name, pkt->len) -- уже мусор. Структура выглядит так (include/linux/auto_fs4.h): /* autofs v5 common packet struct */ struct autofs_v5_packet { struct autofs_packet_hdr hdr; autofs_wqt_t wait_queue_token; __u32 dev; __u64 ino; __u32 uid; __u32 gid; __u32 pid; __u32 tgid; __u32 len; char name[NAME_MAX+1]; }; А выбор типа autofs_wqt_t происходит в include/linux/auto_fs.h по явному списку 64-битных архитектур -- альту как уже чисто 64-битному дистрибутиву на e2k это без разницы, в OSL есть смысл хотя бы держать в уме (отметил в mcst#4886). Патч прилагаю, отправил в sisyphus пробное задание #308838 (заодно сделал ручку rpcgen, у нас тут пока glibc 2.29); на его основе будет пробное же для p10_e2k. Коллеги, благодарю за внимание и труды!
С предоставленным пакетом всё работает, спасибо! Можно считать FIXED, теперь жду, когда пакет с исправлением окажется в репе и поставлю CLOSED.
(Ответ для makise-homura на комментарий #6) > С предоставленным пакетом всё работает, спасибо! Можно считать FIXED, теперь > жду, когда пакет с исправлением окажется в репе и поставлю CLOSED. Ушло в sisyphus, sisyphus_e2k и p10_e2k.
В версии -alt6 в sysiphus правка вошла. Спасибо! Закрываю.