Bug 39302

Summary: не пингуется mDNS хост
Product: Sisyphus Reporter: Anton Farygin <rider>
Component: libnss-myhostnameAssignee: Alexey Shabalin <shaba>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: arseny, ender, ldv, rider, sem, shaba
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Anton Farygin 2020-11-16 23:27:40 MSK
# ping BRWEC5C6891B7F6.local
ping: BRWEC5C6891B7F6.local: System error

при этом под пользователем работает, не работает только под рутом.

пробовать пинговать можно любой узел, заканчивающийся на .local, даже не существуюший.
Comment 1 Mikhail Efremov 2020-11-18 16:14:46 MSK
Похоже, что getaddrinfo() возвращает EAI_SYSTEM по каким-то причинам. Т.е. проблема не в ping, а в резолвинге.
Comment 2 Mikhail Efremov 2020-11-18 16:19:57 MSK
Предлагаю под strace запустить, там и errno будет видно.
Comment 3 Anton Farygin 2020-11-18 18:07:02 MSK
# resolve BRWE89EB445B7E5.local
IP address of BRWE89EB445B7E5.local: xx.xx.xx.xx

# ping BRWE89EB445B7E5.local
ping: BRWE89EB445B7E5.local: System error
Comment 4 Anton Farygin 2020-11-18 18:09:59 MSK
(Ответ для Mikhail Efremov на комментарий #2)
> Предлагаю под strace запустить, там и errno будет видно.

в strace чистенько. там после попытки срезловить его на местном DNS вот такое в конце:
737976 openat(AT_FDCWD, "/lib64/libnss_myhostname.so.2", O_RDONLY|O_CLOEXEC) = 5
737976 read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2404\0\0\0\0\0\0"..., 832) = 832
737976 fstat(5, {st_mode=S_IFREG|0644, st_size=104688, ...}) = 0
737976 mmap(NULL, 108808, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7f2511a33000
737976 mmap(0x7f2511a36000, 45056, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x3000) = 0x7f2511a36000
737976 mmap(0x7f2511a41000, 32768, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xe000) = 0x7f2511a41000
737976 mmap(0x7f2511a49000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x15000) = 0x7f2511a49000
737976 close(5)                         = 0
737976 openat(AT_FDCWD, "/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
737976 openat(AT_FDCWD, "/usr/lib64/tls/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
737976 stat("/usr/lib64/tls/haswell/x86_64", 0x7ffd5e3febf0) = -1 ENOENT (Нет такого файла или каталога)
737976 openat(AT_FDCWD, "/usr/lib64/tls/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
737976 stat("/usr/lib64/tls/haswell", 0x7ffd5e3febf0) = -1 ENOENT (Нет такого файла или каталога)
737976 openat(AT_FDCWD, "/usr/lib64/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
737976 stat("/usr/lib64/tls/x86_64", 0x7ffd5e3febf0) = -1 ENOENT (Нет такого файла или каталога)
737976 openat(AT_FDCWD, "/usr/lib64/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
737976 stat("/usr/lib64/tls", 0x7ffd5e3febf0) = -1 ENOENT (Нет такого файла или каталога)
737976 openat(AT_FDCWD, "/usr/lib64/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
737976 stat("/usr/lib64/haswell/x86_64", 0x7ffd5e3febf0) = -1 ENOENT (Нет такого файла или каталога)
737976 openat(AT_FDCWD, "/usr/lib64/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
737976 stat("/usr/lib64/haswell", 0x7ffd5e3febf0) = -1 ENOENT (Нет такого файла или каталога)
737976 openat(AT_FDCWD, "/usr/lib64/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
737976 stat("/usr/lib64/x86_64", 0x7ffd5e3febf0) = -1 ENOENT (Нет такого файла или каталога)
737976 openat(AT_FDCWD, "/usr/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
737976 stat("/usr/lib64", 0x7ffd5e3febf0) = -1 ENOENT (Нет такого файла или каталога)
737976 munmap(0x7f2511a33000, 108808)   = 0
737976 write(2, "ping: ", 6)            = 6
737976 write(2, "BRWE89EB445B7E5.local: System er"..., 35) = 35
737976 write(2, "\n", 1)                = 1
737976 close(1)                         = 0
737976 close(2)                         = 0
737976 exit_group(2)                    = ?

можешь у себя попробовать - иметь этот .local хост в сети не обязательно.
Comment 5 Anton Farygin 2020-11-18 18:11:08 MSK
может быть ему /lib64/libpthread.so.0 в чруте не хватило ?
Comment 6 Mikhail Efremov 2020-11-20 00:04:08 MSK
А если выполнить update_chrooted all?
Comment 7 Anton Farygin 2020-11-20 11:56:46 MSK
# update_chrooted all
# ping rider.local
ping: rider.local: System error

Миша, у тебя же это прекрасно воспроизводится. Или нет ?
Comment 8 Mikhail Efremov 2020-11-20 12:27:35 MSK
(Ответ для Anton Farygin на комментарий #7)
> # update_chrooted all
> # ping rider.local
> ping: rider.local: System error
> 
> Миша, у тебя же это прекрасно воспроизводится. Или нет ?

Нет, не воспроизводится. Впрочем, я проверял на p9. В Сизифе же libnss_myhostname.so.2 действительно слинкован с libpthread.so.0.
Значит в этом случае libpthread надо добавлять в чрут, видимо.
Comment 9 Dmitry V. Levin 2020-11-20 12:40:26 MSK
(In reply to Mikhail Efremov from comment #8)
> Сизифе же
> libnss_myhostname.so.2 действительно слинкован с libpthread.so.0.

Ой.  Вы же понимаете, что это значит?  Во время работы обычная ничего не подозревающая программа вызывает getaddrinfo, в результате которого вдруг начинает быть слинкованной с -lpthread. Это потенциально очень проблематично.  Не надо так делать.
Comment 10 Dmitry V. Levin 2020-11-20 12:42:53 MSK
Это надо перевесить на мантейнера libnss_myhostname.so.2.
Не все программы слинкованы с -lpthread, и не надо их к этому принуждать.
Comment 11 Anton Farygin 2020-11-20 13:39:53 MSK
перевешиваю на libnss-myhostname
Comment 12 Anton Farygin 2020-11-20 13:44:57 MSK
а тогда, видимо, и это можно считать за ошибку ? :
/lib64/libnss_wins.so.2
        linux-vdso.so.1 (0x00007ffefb73f000)
        libwbclient.so.0 => /usr/lib64/libwbclient.so.0 (0x00007f4779af3000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4779ad2000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f477990e000)
        libsamba-util.so.0 => /usr/lib64/libsamba-util.so.0 (0x00007f477989a000)
        libwinbind-client-samba4.so => /usr/lib64/samba/libwinbind-client-samba4.so (0x00007f4779894000)
        libreplace-samba4.so => /usr/lib64/samba/libreplace-samba4.so (0x00007f477988f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f4779b30000)
        libgenrand-samba4.so => /usr/lib64/samba/libgenrand-samba4.so (0x00007f4779888000)
        libsocket-blocking-samba4.so => /usr/lib64/samba/libsocket-blocking-samba4.so (0x00007f4779883000)
        libsamba-debug-samba4.so => /usr/lib64/samba/libsamba-debug-samba4.so (0x00007f4779878000)
        libtime-basic-samba4.so => /usr/lib64/samba/libtime-basic-samba4.so (0x00007f4779873000)
        libsys-rw-samba4.so => /usr/lib64/samba/libsys-rw-samba4.so (0x00007f477986e000)
        libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f47797b6000)
        libtevent.so.0 => /usr/lib64/libtevent.so.0 (0x00007f477979f000)
        libtalloc.so.2 => /usr/lib64/libtalloc.so.2 (0x00007f477978d000)
        libicui18n.so.67 => /usr/lib64/libicui18n.so.67 (0x00007f4779493000)
        libicuuc.so.67 => /usr/lib64/libicuuc.so.67 (0x00007f47792af000)
        libgnutls.so.30 => /usr/lib64/libgnutls.so.30 (0x00007f47790e6000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f47790e1000)
        libiov-buf-samba4.so => /usr/lib64/samba/libiov-buf-samba4.so (0x00007f47790da000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f47790cf000)
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f47790a2000)
        libzstd.so.1 => /lib64/libzstd.so.1 (0x00007f4778fec000)
        liblz4.so.1 => /lib64/liblz4.so.1 (0x00007f4778fca000)
        libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007f4778eab000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4778c33000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f4778aee000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f4778ad4000)
        libicudata.so.67 => /usr/lib64/libicudata.so.67 (0x00007f4776fbb000)
        libp11-kit.so.0 => /usr/lib64/libp11-kit.so.0 (0x00007f4776e9b000)
        libidn2.so.0 => /lib64/libidn2.so.0 (0x00007f4776e7a000)
        libunistring.so.2 => /lib64/libunistring.so.2 (0x00007f4776cf6000)
        libtasn1.so.6 => /usr/lib64/libtasn1.so.6 (0x00007f4776ce0000)
        libnettle.so.8 => /usr/lib64/libnettle.so.8 (0x00007f4776ca2000)
        libhogweed.so.6 => /usr/lib64/libhogweed.so.6 (0x00007f4776c59000)
        libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007f4776be3000)
        libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f4776bc1000)
        libffi.so.7 => /usr/lib64/libffi.so.7 (0x00007f4776bb3000)
Comment 13 Dmitry V. Levin 2020-11-20 14:21:46 MSK
(In reply to Anton Farygin from comment #12)
> а тогда, видимо, и это можно считать за ошибку ? :
> /lib64/libnss_wins.so.2
>         linux-vdso.so.1 (0x00007ffefb73f000)
>         libwbclient.so.0 => /usr/lib64/libwbclient.so.0 (0x00007f4779af3000)
>         libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4779ad2000)
>         libc.so.6 => /lib64/libc.so.6 (0x00007f477990e000)
>         libsamba-util.so.0 => /usr/lib64/libsamba-util.so.0
> (0x00007f477989a000)
>         libwinbind-client-samba4.so =>
> /usr/lib64/samba/libwinbind-client-samba4.so (0x00007f4779894000)
>         libreplace-samba4.so => /usr/lib64/samba/libreplace-samba4.so
> (0x00007f477988f000)
>         /lib64/ld-linux-x86-64.so.2 (0x00007f4779b30000)
>         libgenrand-samba4.so => /usr/lib64/samba/libgenrand-samba4.so
> (0x00007f4779888000)
>         libsocket-blocking-samba4.so =>
> /usr/lib64/samba/libsocket-blocking-samba4.so (0x00007f4779883000)
>         libsamba-debug-samba4.so =>
> /usr/lib64/samba/libsamba-debug-samba4.so (0x00007f4779878000)
>         libtime-basic-samba4.so => /usr/lib64/samba/libtime-basic-samba4.so
> (0x00007f4779873000)
>         libsys-rw-samba4.so => /usr/lib64/samba/libsys-rw-samba4.so
> (0x00007f477986e000)
>         libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f47797b6000)
>         libtevent.so.0 => /usr/lib64/libtevent.so.0 (0x00007f477979f000)
>         libtalloc.so.2 => /usr/lib64/libtalloc.so.2 (0x00007f477978d000)
>         libicui18n.so.67 => /usr/lib64/libicui18n.so.67 (0x00007f4779493000)
>         libicuuc.so.67 => /usr/lib64/libicuuc.so.67 (0x00007f47792af000)
>         libgnutls.so.30 => /usr/lib64/libgnutls.so.30 (0x00007f47790e6000)
>         libdl.so.2 => /lib64/libdl.so.2 (0x00007f47790e1000)
>         libiov-buf-samba4.so => /usr/lib64/samba/libiov-buf-samba4.so
> (0x00007f47790da000)
>         librt.so.1 => /lib64/librt.so.1 (0x00007f47790cf000)
>         liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f47790a2000)
>         libzstd.so.1 => /lib64/libzstd.so.1 (0x00007f4778fec000)
>         liblz4.so.1 => /lib64/liblz4.so.1 (0x00007f4778fca000)
>         libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007f4778eab000)
>         libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4778c33000)
>         libm.so.6 => /lib64/libm.so.6 (0x00007f4778aee000)
>         libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f4778ad4000)
>         libicudata.so.67 => /usr/lib64/libicudata.so.67 (0x00007f4776fbb000)
>         libp11-kit.so.0 => /usr/lib64/libp11-kit.so.0 (0x00007f4776e9b000)
>         libidn2.so.0 => /lib64/libidn2.so.0 (0x00007f4776e7a000)
>         libunistring.so.2 => /lib64/libunistring.so.2 (0x00007f4776cf6000)
>         libtasn1.so.6 => /usr/lib64/libtasn1.so.6 (0x00007f4776ce0000)
>         libnettle.so.8 => /usr/lib64/libnettle.so.8 (0x00007f4776ca2000)
>         libhogweed.so.6 => /usr/lib64/libhogweed.so.6 (0x00007f4776c59000)
>         libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007f4776be3000)
>         libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f4776bc1000)
>         libffi.so.7 => /usr/lib64/libffi.so.7 (0x00007f4776bb3000)

Это вообще финиш.
Comment 14 Alexey Shabalin 2020-11-27 06:04:30 MSK
(Ответ для Mikhail Efremov на комментарий #8)
> (Ответ для Anton Farygin на комментарий #7)
> > # update_chrooted all
> > # ping rider.local
> > ping: rider.local: System error
> > 
> > Миша, у тебя же это прекрасно воспроизводится. Или нет ?
> 
> Нет, не воспроизводится. Впрочем, я проверял на p9. В Сизифе же
> libnss_myhostname.so.2 действительно слинкован с libpthread.so.0.
> Значит в этом случае libpthread надо добавлять в чрут, видимо.

В p9 не воспроизводится, но все же там тоже слинковано с libpthread.
Т.е. в этом месте я не вижу разницы в libnss_myhostname.
Разница скорее в iputils.
Я не утверждаю, что libnss_myhostname правильно слинкован с libpthread, но оторвать по-быстрому у меня не получилось.
Comment 15 Mikhail Efremov 2020-11-27 11:36:11 MSK
(Ответ для Alexey Shabalin на комментарий #14)
> (Ответ для Mikhail Efremov на комментарий #8)
> > (Ответ для Anton Farygin на комментарий #7)
> > > # update_chrooted all
> > > # ping rider.local
> > > ping: rider.local: System error
> > > 
> > > Миша, у тебя же это прекрасно воспроизводится. Или нет ?
> > 
> > Нет, не воспроизводится. Впрочем, я проверял на p9. В Сизифе же
> > libnss_myhostname.so.2 действительно слинкован с libpthread.so.0.
> > Значит в этом случае libpthread надо добавлять в чрут, видимо.
> 
> В p9 не воспроизводится, но все же там тоже слинковано с libpthread.

А, значит туда тоже уже просочилось. У меня был p9 не обновленный до текущего, в
libnss-myhostname-243.8-alt2 еще не слинкован.