Example: (Sisyphus) ping -W10 www.rbc.ru ping: option argument contains garbage: ping: this will become fatal error in the future PING www.RBC.RU (185.72.229.3) 56(84) bytes of data. Which argument contains garbage?
$ rpm -q iputils iputils-20210722-alt1.x86_64 $ ping -W10 www.rbc.ru PING www.rbc.ru (185.72.229.3) 56(84) bytes of data. 64 bytes from www.rbc.ru (185.72.229.3): icmp_seq=1 ttl=57 time=43.1 ms 64 bytes from www.rbc.ru (185.72.229.3): icmp_seq=2 ttl=57 time=54.5 ms 64 bytes from www.rbc.ru (185.72.229.3): icmp_seq=3 ttl=57 time=39.4 ms
Антон, выше Денис опустил информацию, что этот дефект "плавающий". Чруты не всегда формируются корректно, до них не доезжают локали, из-за чего неверно парсятся аргументы ping. Проблема затрагивает все решения, построенные на p9, и выше.
Было бы интересно увидеть методику воспроизведения.
наблюдается только от root # ping -W10 www.rbc.ru ping: option argument contains garbage: ping: this will become fatal error in the future PING www.RBC.RU (80.68.253.3) 56(84) bytes of data. 64 bytes from www.rbc.ru (80.68.253.3): icmp_seq=1 ttl=46 time=21.8 ms ^C --- www.RBC.RU ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 21.822/21.822/21.822/0.000 ms Может быть связано с локалью LANG=en_US.utf8 iputils-20210722-alt1 но также наблюдалось на iputils-20210202-alt1
export LANG=C сообщение об ошибке убирает. Это связано с локалью. Возможно в chroot нет нужных локалей, что вызывает ошибки при работе ping.
У меня такой проблемы нет от слова совсем, при этом в чрут точно не попадают локали: 87677 chroot("/var/resolv") = 0 87677 chdir("/") = 0 87677 setregid(468, 468) = 0 87677 capget({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, NULL) = 0 87677 capget({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=1<<CAP_CHOWN|1<<CAP_DAC_OVERRIDE|1<<CAP_DAC_READ_SEARCH|1<<CAP_FOWNER|1<<CAP_FSETID|1<< CAP_KILL|1<<CAP_SETGID|1<<CAP_SETUID|1<<CAP_SETPCAP|1<<CAP_LINUX_IMMUTABLE|1<<CAP_NET_BIND_SERVICE|1<<CAP_NET_BROADCAST|1<<CAP_NET_ADMIN|1<<CAP_NET_RAW|1<<CA P_IPC_LOCK|1<<CAP_IPC_OWNER|1<<CAP_SYS_MODULE|1<<CAP_SYS_RAWIO|1<<CAP_SYS_CHROOT|1<<CAP_SYS_PTRACE|1<<CAP_SYS_PACCT|1<<CAP_SYS_ADMIN|1<<CAP_SYS_BOOT|1<<CAP_S YS_NICE|1<<CAP_SYS_RESOURCE|1<<CAP_SYS_TIME|1<<CAP_SYS_TTY_CONFIG|1<<CAP_MKNOD|1<<CAP_LEASE|1<<CAP_AUDIT_WRITE|1<<CAP_AUDIT_CONTROL|1<<CAP_SETFCAP|1<<CAP_MAC _OVERRIDE|1<<CAP_MAC_ADMIN|1<<CAP_SYSLOG|1<<CAP_WAKE_ALARM|1<<CAP_BLOCK_SUSPEND|1<<CAP_AUDIT_READ|1<<CAP_PERFMON|1<<CAP_BPF|1<<CAP_CHECKPOINT_RESTORE, permit ted=1<<CAP_CHOWN|1<<CAP_DAC_OVERRIDE|1<<CAP_DAC_READ_SEARCH|1<<CAP_FOWNER|1<<CAP_FSETID|1<<CAP_KILL|1<<CAP_SETGID|1<<CAP_SETUID|1<<CAP_SETPCAP|1<<CAP_LINUX_I MMUTABLE|1<<CAP_NET_BIND_SERVICE|1<<CAP_NET_BROADCAST|1<<CAP_NET_ADMIN|1<<CAP_NET_RAW|1<<CAP_IPC_LOCK|1<<CAP_IPC_OWNER|1<<CAP_SYS_MODULE|1<<CAP_SYS_RAWIO|1<< CAP_SYS_CHROOT|1<<CAP_SYS_PTRACE|1<<CAP_SYS_PACCT|1<<CAP_SYS_ADMIN|1<<CAP_SYS_BOOT|1<<CAP_SYS_NICE|1<<CAP_SYS_RESOURCE|1<<CAP_SYS_TIME|1<<CAP_SYS_TTY_CONFIG| 1<<CAP_MKNOD|1<<CAP_LEASE|1<<CAP_AUDIT_WRITE|1<<CAP_AUDIT_CONTROL|1<<CAP_SETFCAP|1<<CAP_MAC_OVERRIDE|1<<CAP_MAC_ADMIN|1<<CAP_SYSLOG|1<<CAP_WAKE_ALARM|1<<CAP_ BLOCK_SUSPEND|1<<CAP_AUDIT_READ|1<<CAP_PERFMON|1<<CAP_BPF|1<<CAP_CHECKPOINT_RESTORE, inheritable=0}) = 0 87677 capset({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=1<<CAP_SETGID|1<<CAP_SETUID, permitted=1<<CAP_SETGID|1<<CAP_SETUID|1<<CAP_NET_ADMIN|1<< CAP_NET_RAW, inheritable=0}) = 0 87677 prctl(PR_SET_KEEPCAPS, 1) = 0 87677 setreuid(490, 490) = 0 87677 prctl(PR_SET_KEEPCAPS, 0) = 0 87677 capset({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=0, permitted=1<<CAP_NET_ADMIN|1<<CAP_NET_RAW, inheritable=0}) = 0 87677 openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога) 87677 openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога) 87677 openat(AT_FDCWD, "/usr/lib/locale/ru_RU.UTF-8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога) 87677 openat(AT_FDCWD, "/usr/lib/locale/ru_RU.utf8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога) 87677 openat(AT_FDCWD, "/usr/lib/locale/ru_RU/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога) 87677 openat(AT_FDCWD, "/usr/lib/locale/ru.UTF-8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога) 87677 openat(AT_FDCWD, "/usr/lib/locale/ru.utf8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога) 87677 openat(AT_FDCWD, "/usr/lib/locale/ru/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога) 87677 getrandom("\xe1\x44\xdd\xf1", 4, GRND_NONBLOCK) = 4
Собственно вот весь чрут: # find /var/resolv/ /var/resolv/ /var/resolv/etc /var/resolv/etc/nsswitch.conf /var/resolv/etc/resolv.conf /var/resolv/etc/services /var/resolv/etc/localtime /var/resolv/etc/host.conf /var/resolv/etc/hosts /var/resolv/lib64 /var/resolv/lib64/libnss_myhostname.so.2 /var/resolv/lib64/libnss_mdns4_minimal.so.2 /var/resolv/lib64/libnss_role.so.2 /var/resolv/lib64/libnss_files.so.2 /var/resolv/lib64/libnss_dns.so.2 /var/resolv/lib64/libresolv.so.2 /var/resolv/var /var/resolv/var/avahi /var/resolv/var/avahi/socket /var/resolv/var/nis /var/resolv/var/yp /var/resolv/var/yp/binding
setlocale() если не удалось установить локаль в каких-то случаях выставляет errno, а в каких-то нет, от чего зависит я не понял. У меня воспроизводится так: LC_ALL=ru_RU.utf8 ping -W10 www.rbc.ru В любом случае в ping надо игнорировать неуспешный setlocale(). Впрочем, в Сизифе это не слишком большая проблема: это просто warning, на работу не влияет. А вот в некоторых более ранних версиях iputils это проблема, т.к. ошибка была фатальной. Для них должен работать workaround LC_ALL=C ping -W10 www.rbc.ru
да, воспроизвелось.
iputils-20210722-alt2 -> sisyphus: Tue Aug 03 2021 Mikhail Efremov <sem@altlinux> 20210722-alt2 - ping: Fixed -W/-i options in case of setlocale() error (closes: #40636).
Спасибо. Если не трудно, поправьте в p10 и p9.