[devel] ldd segfault at verify-elf // samba-4.14.11-alt3: Sisyphus/x86_64 test rebuild failed

Gleb Fotengauer-Malinovskiy glebfm на altlinux.org
Ср Фев 9 04:10:36 MSK 2022


On Wed, Feb 09, 2022 at 04:51:32AM +0400, Evgeny Sinelnikov wrote:
> ср, 9 февр. 2022 г. в 03:39, Dmitry V. Levin <ldv на 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 на 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 на 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 уже диагностировал это выше.

> Я не понимаю как мне интерпретировать этот вывод, чтобы что-то понять
> мне требуется воспроизвести проблему руками. В упор, не понимаю как
> мне это сделать.

-- 
glebfm


Подробная информация о списке рассылки Devel