Bug 42862 - Крашится autofs на e2k (при этом всё ок на x86_64)
Summary: Крашится autofs на e2k (при этом всё ок на x86_64)
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: autofs (show other bugs)
Version: unstable
Hardware: e2k Linux
: P5 normal
Assignee: Michael Shigorin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-05-26 00:08 MSK by makise-homura
Modified: 2022-10-23 05:06 MSK (History)
3 users (show)

See Also:


Attachments
[PATCH] auto_fs.h: added e2k as a pure 64-bit arch (1.21 KB, patch)
2022-10-22 08:51 MSK, Michael Shigorin
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description makise-homura 2022-05-26 00:08:20 MSK
Имею такую машину:

[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
Comment 1 Sergey Bolshakov 2022-05-26 11:32:04 MSK
@mike, видимо это к вам
Comment 2 Michael Shigorin 2022-10-14 23:19:46 MSK
Илья, могу подготовить стенд -- посмотрите?
Comment 3 makise-homura 2022-10-21 23:53:20 MSK
Запилил стенд. Доступ по запросу дан к машинам 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 ~ #
Comment 4 ilyakurdyukov 2022-10-22 08:23:50 MSK
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-бит архитектур. Из-за этого поля оказываются смещены и происходит ошибка.
Comment 5 Michael Shigorin 2022-10-22 08:51:21 MSK
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.

Коллеги, благодарю за внимание и труды!
Comment 6 makise-homura 2022-10-22 23:27:37 MSK
С предоставленным пакетом всё работает, спасибо! Можно считать FIXED, теперь жду, когда пакет с исправлением окажется в репе и поставлю CLOSED.
Comment 7 Michael Shigorin 2022-10-22 23:29:44 MSK
(Ответ для makise-homura на комментарий #6)
> С предоставленным пакетом всё работает, спасибо! Можно считать FIXED, теперь
> жду, когда пакет с исправлением окажется в репе и поставлю CLOSED.
Ушло в sisyphus, sisyphus_e2k и p10_e2k.
Comment 8 makise-homura 2022-10-23 05:06:09 MSK
В версии -alt6 в sysiphus правка вошла. Спасибо! Закрываю.