[devel] ldd segfault at verify-elf // samba-4.14.11-alt3: Sisyphus/x86_64 test rebuild failed
Evgeny Sinelnikov
sin на altlinux.org
Ср Фев 9 04:43:41 MSK 2022
ср, 9 февр. 2022 г. в 05:11, Gleb Fotengauer-Malinovskiy <glebfm at altlinux.org>:
>
> On Wed, Feb 09, 2022 at 04:51:32AM +0400, Evgeny Sinelnikov wrote:
> > ср, 9 февр. 2022 г. в 03:39, Dmitry V. Levin <ldv at altlinux.org>:
> > >
> > > On Wed, Feb 09, 2022 at 03:34:57AM +0400, Evgeny Sinelnikov wrote:
> > > > Доброй ночи,
> > > >
> > > > честно говоря, я даже не знаю как к этой проблеме подступиться.
> > > >
> > > > Вот вышел очередной CVE:
> > > > https://git.altlinux.org/tasks/295057/build/200/x86_64/log
> > > >
> > > > Теперь для его закрытия нужно сделать что?
> > > > Раскопать где в недрах waf задаётся правильная линковка?
> > > >
> > > > Я даже не уверен, что понимаю о чём идёт речь в плане правильная/неправильная.
> > > >
> > > > Прошу помочь разобраться со следующим:
> > > >
> > > > 1) Как воспроизвести проверку локально?
> > > > Вот я смотрел-смотрел сюда и хотел уже было заплакать, но решил написать:
> > > > https://sourceware.org/bugzilla/show_bug.cgi?id=28868
> > > >
> > > > 2) Где про всё это можно почитать так, чтобы было понятно?
> > > > Я не понимаю как диагностировать и решать данную проблему.
> > >
> > > Цитирую цитату:
> >
> > Спасибо, я перечитал. Понял, что не особо понял что будет дальше.
> > Поясню. Сборку запустил, ожидаю сам не знаю чего. Не уверен, что
> > verify-elf, запускающий ldd со старым алгоритмом сортировки библиотек,
> > будет информативнее, что то, что имеется...
> >
> > Я ведь не понимаю, что ожидается. Как мне догадаться то получилось,
> > что имелось в виду как "список ошибок" или нет?
>
> Ожидается, что при работе verify-elf динамический загрузчик не упадёт и
> verify-elf сможет вывести всё, что он должен вывести.
>
> > > > пн, 7 февр. 2022 г. в 19:12, Gleb Fotengauer-Malinovskiy <glebfm at altlinux.org>:
> > > [...]
> > > > > В данном случае тут и проблема в samba и бага (см. [1]) в новой glibc
> > > > > 2.35. Если бы в glibc не было бы баги, то samba (вместе с бы просто
> > > > > оказалась во вчерашнем списке пакетов с library not found[2].
> > > > >
> > > > > Чтобы посмотреть на список ошибок в упаковке библиотек samba, можно
> > > > > добавить export GLIBC_TUNABLES=glibc.rtld.dynamic_sort=1 в конец секции
> > > > > %install, чтобы verify-elf запустил ldd со старым алгоритмом сортировки
> > > > > библиотек.
> >
> > Вот такой diff:
> >
> > sin at xdt samba $ git diff | cat
> > diff --git a/samba4.spec b/samba4.spec
> > index 759d45b8525..aec070bbea2 100644
> > --- a/samba4.spec
> > +++ b/samba4.spec
> > @@ -1088,6 +1088,8 @@ install -m755 script/traffic_replay
> > %buildroot%_bindir/traffic_replay
> > %find_lang pam_winbind
> > %find_lang net
> >
> > +export GLIBC_TUNABLES=glibc.rtld.dynamic_sort=1
> > +
> > %if_with testsuite
> > %check
> > TDB_NO_FSYNC=1 %make_build test V=2 -Onone
> >
> >
> > Вот такой вывод:
> >
> > ...
>
> Где-то выше был вывод verify-elf, в нём есть сообщения о том, что при
> проверке некоторых ELF-ов не были найдены необходимые библиотеки.
>
> > Processing files: samba-libs-4.14.12-alt1
> > warning: File listed twice: /usr/lib64/samba/pdb
> > Finding Provides (using /usr/lib/rpm/find-provides)
> > Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.0jr7RN
> > find-provides: running scripts
> > (alternatives,debuginfo,gir,lib,pam,perl,pkgconfig,python,python3,shell,typelib,vala)
> > lib.prov: /usr/src/tmp/samba-buildroot/usr/lib64/libdcerpc-binding.so.0:
> > 227 symbols, 18 bpp
> > lib.prov: WARNING:
> > /usr/src/tmp/samba-buildroot/usr/lib64/libdcerpc-samr.so.0: no symbols
> > lib.prov: /usr/src/tmp/samba-buildroot/usr/lib64/libdcerpc-server-core.so.0:
> > 53 symbols, 16 bpp
> > lib.prov: /usr/src/tmp/samba-buildroot/usr/lib64/libdcerpc.so.0: 169
> > symbols, 18 bpp
> > lib.prov: /usr/src/tmp/samba-buildroot/usr/lib64/libnetapi.so.0: 716
> > symbols, 20 bpp
> > warning: hash collision: NetWkstaGetInfo_r ndr_pull_WKSTA_INFO_100
> > lib.prov: /usr/src/tmp/samba-buildroot/usr/lib64/libsamba-credentials.so.1:
> > 109 symbols, 17 bpp
> > lib.prov: /usr/src/tmp/samba-buildroot/usr/lib64/libsamba-hostconfig.so.0:
> > 582 symbols, 20 bpp
> > lib.prov: /usr/src/tmp/samba-buildroot/usr/lib64/libsamba-passdb.so.0:
> > 307 symbols, 19 bpp
> > lib.prov: /usr/src/tmp/samba-buildroot/usr/lib64/libsamdb.so.0: 44
> > symbols, 16 bpp
> > lib.prov: /usr/src/tmp/samba-buildroot/usr/lib64/libsmbconf.so.0: 1133
> > symbols, 21 bpp
> > lib.prov: /usr/src/tmp/samba-buildroot/usr/lib64/libsmbldap.so.2: 33
> > symbols, 16 bpp
> > Finding Requires (using /usr/lib/rpm/find-requires)
> > Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.qVAaY1
> > find-requires: running scripts
> > (cpp,debuginfo,files,gir-js,gir-python,gir,lib,pam,perl,pkgconfig,pkgconfiglib,python,python3,rpmlib,shebang,shell,static,symlinks,systemd-services,typelib,vala)
> > /usr/lib/rpm/ldd: line 100: 3544681 Segmentation fault
> > LD_TRACE_LOADED_OBJECTS=1 LD_WARN=$warn LD_BIND_NOW=$bind_now
> > LD_DEBUG=$debug LD_LIBRARY_VERSION=$verify_out
> > LD_PRELOAD="$rtld_preload" "$rtld" --library-path "$rpath"
> > "$rtld_target"
> > ldd: ERROR: /usr/src/tmp/samba-buildroot/usr/lib64/libsmbldap.so.2.1.0:
> > trace failed
>
> Если бы не ошибка в glibc, в этом месте была бы ошибка с указанием того,
> какой именно библиотеки не нашлось при обработке библиотеки
> libsmbldap.so.2.1.0, но к счастью verify-elf уже диагностировал это выше.
sin at xdt samba $ head verify-elf.log
Verifying ELF objects in /usr/src/tmp/samba-buildroot
(arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=relaxed)
verify-elf: WARNING: ./usr/lib/ctdb/ctdb-eventd: RPATH entry found:
/usr/lib64/samba
verify-elf: WARNING: ./usr/lib/ctdb/ctdb_mutex_fcntl_helper: RPATH
entry found: /usr/lib64/samba
verify-elf: WARNING: ./usr/lib/ctdb/ctdb-config: RPATH entry found:
/usr/lib64/samba
verify-elf: WARNING: ./usr/lib/ctdb/ctdb-event: RPATH entry found:
/usr/lib64/samba
versin at xdt samba $ wc -l verify-elf.log
1167 verify-elf.logify-elf: WARNING: ./usr/lib/ctdb/ctdb_lock_helper:
RPATH entry found: /usr/lib64/samba
verify-elf: WARNING: ./usr/lib/ctdb/ctdb-path: RPATH entry found:
/usr/lib64/samba
verify-elf: WARNING: ./usr/lib/ctdb/ctdb_recovery_helper: RPATH entry
found: /usr/lib64/samba
verify-elf: WARNING: ./usr/lib/ctdb/ctdb_takeover_helper: RPATH entry
found: /usr/lib64/samba
verify-elf: WARNING: ./usr/lib/ctdb/ctdb_killtcp: RPATH entry found:
/usr/lib64/samba
sin at xdt samba $ wc -l verify-elf.log
1167 verify-elf.log
sin at xdt samba $ grep libsmbldap verify-elf.log
verify-elf: WARNING: ./usr/lib64/samba/libsmbldaphelper-samba4.so:
RPATH entry found: /usr/lib64/samba
verify-elf: WARNING: ./usr/lib64/samba/libsmbldaphelper-samba4.so:
undefined symbol: decode_account_policy_name
verify-elf: WARNING: ./usr/lib64/samba/libsmbldaphelper-samba4.so:
undefined symbol: account_policy_get_default
verify-elf: WARNING: ./usr/lib64/samba/libsmbldaphelper-samba4.so:
undefined symbol: algorithmic_rid_base
verify-elf: WARNING: ./usr/lib64/samba/libsmbldaphelper-samba4.so:
undefined symbol: get_account_policy_attr
verify-elf: WARNING: ./usr/lib64/samba-dc/libsmbldaphelper-samba4.so:
RPATH entry found: /usr/lib64/samba-dc
verify-elf: WARNING: ./usr/lib64/samba-dc/libsmbldaphelper-samba4.so:
undefined symbol: decode_account_policy_name
verify-elf: WARNING: ./usr/lib64/samba-dc/libsmbldaphelper-samba4.so:
undefined symbol: account_policy_get_default
verify-elf: WARNING: ./usr/lib64/samba-dc/libsmbldaphelper-samba4.so:
undefined symbol: algorithmic_rid_base
verify-elf: WARNING: ./usr/lib64/samba-dc/libsmbldaphelper-samba4.so:
undefined symbol: get_account_policy_attr
verify-elf: WARNING: ./usr/lib64/samba-dc/libsmbldap.so.2.1.0: RPATH
entry found: /usr/lib64/samba-dc
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsamba-debug-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libreplace-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsamba-security-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsmbd-shim-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libgenrand-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsocket-blocking-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsamba-debug-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libtime-basic-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsys-rw-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libreplace-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libutil-reg-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libmessages-util-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsamba3-util-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsamba-debug-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libdbwrap-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsys-rw-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libserver-id-db-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libreplace-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsamba-security-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libtalloc-report-printf-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libiov-buf-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsocket-blocking-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libmessages-dgm-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libinterfaces-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsamba-sockets-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libCHARSET3-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsmbd-shim-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsamba-cluster-support-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libutil-tdb-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libtime-basic-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libtdb-wrap-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libgenrand-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libutil-setid-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libserver-role-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libreplace-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsamba-debug-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libgenrand-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libtime-basic-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libreplace-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libserver-role-samba4.so
verify-elf: WARNING: ./usr/lib64/libsmbldap.so.2.1.0: not found:
libsamba-debug-samba4.so
[builder at localhost SPECS]$ ldd
~/tmp/samba-buildroot/usr/lib64/libsmbldap.so.2.1.0
linux-vdso.so.1 (0x00007fff8ddfa000)
libsamba-util.so.0 => not found
libsmbconf.so.0 => not found
libsamba-debug-samba4.so => not found
libreplace-samba4.so => not found
libsamba-security-samba4.so => not found
libsmbd-shim-samba4.so => not found
libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007f24730ab000)
liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007f2473097000)
libtalloc.so.2 => /usr/lib64/libtalloc.so.2 (0x00007f247308a000)
libtevent.so.0 => /usr/lib64/libtevent.so.0 (0x00007f2473075000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2472e6e000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f2472e58000)
libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007f2472e39000)
libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007f2472da2000)
libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007f2472aca000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2473126000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f2472ac5000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f2472a8e000)
libz.so.1 => /lib64/libz.so.1 (0x00007f2472a6f000)
[builder at localhost SPECS]$ readelf -a
~/tmp/samba-buildroot/usr/lib64/libsmbldap.so.2.1.0 |grep RPATH
[builder at localhost SPECS]$ readelf -a
~/tmp/samba-buildroot/usr/lib64/libsmbldap.so.2.1.0 |grep RPATH
[builder at localhost SPECS]$ readelf -a
~/tmp/samba-buildroot/usr/lib64/libsmbldap.so.2.1.0 |less
[builder at localhost SPECS]$ readelf -a
~/tmp/samba-buildroot/usr/lib64/libsmbldap.so.2.1.0 |grep NEEDED
0x0000000000000001 (NEEDED) Shared library: [libsamba-util.so.0]
0x0000000000000001 (NEEDED) Shared library: [libsmbconf.so.0]
0x0000000000000001 (NEEDED) Shared library:
[libsamba-debug-samba4.so]
0x0000000000000001 (NEEDED) Shared library: [libreplace-samba4.so]
0x0000000000000001 (NEEDED) Shared library:
[libsamba-security-samba4.so]
0x0000000000000001 (NEEDED) Shared library:
[libsmbd-shim-samba4.so]
0x0000000000000001 (NEEDED) Shared library: [libldap-2.4.so.2]
0x0000000000000001 (NEEDED) Shared library: [liblber-2.4.so.2]
0x0000000000000001 (NEEDED) Shared library: [libtalloc.so.2]
0x0000000000000001 (NEEDED) Shared library: [libtevent.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
Где же счастье?
> > Я не понимаю как мне интерпретировать этот вывод, чтобы что-то понять
> > мне требуется воспроизвести проблему руками. В упор, не понимаю как
> > мне это сделать.
>
> --
> glebfm
> _______________________________________________
> Devel mailing list
> Devel at lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
--
Sin (Sinelnikov Evgeny)
Подробная информация о списке рассылки Devel