| Summary: | Крашится autofs на e2k (при этом всё ок на x86_64) | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | makise-homura <Igor.A.Molchanov> | ||||
| Component: | autofs | Assignee: | Michael Shigorin <mike> | ||||
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | ilyakurdyukov, mike, sbolshakov | ||||
| Version: | unstable | ||||||
| Hardware: | e2k | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
|
Description
makise-homura
2022-05-26 00:08:20 MSK
@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 правка вошла. Спасибо! Закрываю. |