[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#982443: libc6: Inconsistency detected by ld.so: dl-lookup.c: 111: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!



Package: libc6
Version: 2.31-9
Severity: important
Control: block 981899 with -1

One of the adequate autopkg tests now triggers an assertion in libc6,
which is a regression from buster.
I've extracted that test to build the attached self-contained reproducer.

sid$ make
mkdir -p tmp
# missing-version-information
cc -shared -Wl,--soname=libadequate-test-versionless.so.0 -Wl,--version-script=verscript-global lib.c -o tmp/libadequate-test-versionless.so.0
ln -sf libadequate-test-versionless.so.0 tmp/libadequate-test-versionless.so
cc undef.c -Ltmp -o tmp/adequate-test-msvi -ladequate-test-versionless
cc -shared -Wl,--soname=libadequate-test-versionless.so.0 lib.c -o tmp/libadequate-test-versionless.so.0
LD_LIBRARY_PATH=tmp ldd -r tmp/adequate-test-msvi
tmp/adequate-test-msvi: tmp/libadequate-test-versionless.so.0: no version information available (required by tmp/adequate-test-msvi)
        linux-vdso.so.1 (0x00007ffd73deb000)
        libadequate-test-versionless.so.0 => tmp/libadequate-test-versionless.so.0 (0x00007f6c563b1000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6c561e8000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f6c563bd000)
Inconsistency detected by ld.so: dl-lookup.c: 111: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!
make: *** [Makefile:13: all] Error 1

The test builds a binary that is linked against a shared library with
versioned symbols, but at runtime only a library with unversioned symbols
is available.
adequate then looks for the "no version information available" output, but
nevertheless expects ldd to not fail.


buster$ make
mkdir -p tmp
# missing-version-information
cc -shared -Wl,--soname=libadequate-test-versionless.so.0 -Wl,--version-script=verscript-global lib.c -o tmp/libadequate-test-versionless.so.0
ln -sf libadequate-test-versionless.so.0 tmp/libadequate-test-versionless.so
cc undef.c -Ltmp -o tmp/adequate-test-msvi -ladequate-test-versionless
cc -shared -Wl,--soname=libadequate-test-versionless.so.0 lib.c -o tmp/libadequate-test-versionless.so.0
LD_LIBRARY_PATH=tmp ldd -r tmp/adequate-test-msvi
tmp/adequate-test-msvi: tmp/libadequate-test-versionless.so.0: no version information available (required by tmp/adequate-test-msvi)
        linux-vdso.so.1 (0x00007ffdd3520000)
        libadequate-test-versionless.so.0 => tmp/libadequate-test-versionless.so.0 (0x00007f32e0977000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f32e07b2000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f32e0983000)
buster$ echo $?
0


Andreas

Attachment: libc6assertion.tar.gz
Description: Unix tar archive


Reply to: