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

Evgeny Sinelnikov sin на altlinux.org
Ср Фев 9 03:51:32 MSK 2022


ср, 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 со старым алгоритмом сортировки библиотек,
будет информативнее, что то, что имеется...

Я ведь не понимаю, что ожидается. Как мне догадаться то получилось,
что имелось в виду как "список ошибок" или нет?

>
> > пн, 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


Вот такой вывод:

...
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
find-requires: ERROR: /usr/lib/rpm/lib.req failed
error: /bin/sh failed
error: Failed to find Requires


RPM build errors:
    File listed twice: /usr/share/samba/setup
    File listed twice: /usr/lib64/samba-dc
    absolute symlink:
/usr/src/tmp/samba-buildroot/usr/lib/cups/backend/smb ->
/usr/bin/smbspool
    File listed twice: /usr/lib64/samba/pdb
    /bin/sh failed
    Failed to find Requires
Command exited with non-zero status 1
7289.82user 821.79system 21:23.23elapsed 632%CPU (0avgtext+0avgdata
340200maxresident)k
237424inputs+26859352outputs (14528major+200225025minor)pagefaults 0swaps
hsh-rebuild: rebuild of `pkg.tar' failed.


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


> > >
> > > Другие пакеты с той же диагностикой:
> > > java-1.8.0-openjdk
> > > java-11-openjdk
> [...]
>
>
> --
> ldv



--
Sin (Sinelnikov Evgeny)


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