--- Begin Message ---
Package: libc6
Version: 2.3.6.ds1-13
Severity: important
Here is an example that demonstrates the bug:
> % cat > test.c
> #include <dlfcn.h>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main() {
> void *hdl;
> char *libname = "librt.so", *errmsg;
>
> hdl = dlopen(libname, RTLD_NOW);
> if(hdl == NULL) {
> errmsg = dlerror();
> if(errmsg == NULL) errmsg = "unknown error";
> printf("dlopen fail: %s\n", errmsg);
> } else {
> dlclose(hdl);
> printf("dlopen success\n");
> }
> return 0;
> }
> % gcc -ldl test.c
> % ./a.out
> dlopen fail: /usr/lib/librt.so: symbol __librt_multiple_threads,
> version GLIBC_PRIVATE not defined in file libc.so.6 with link time
> reference
> %
uname:
Linux athena 2.6.19.2 #2 Sat Feb 3 17:09:34 MSK 2007 i686 GNU/Linux
glibc info:
> % dpkg --list libc6
> Desired=Unknown/Install/Remove/Purge/Hold
> | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
> |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
> ||/ Name Version Description
> +++-==============-==============-============================================
> ii libc6 2.3.6.ds1-13 GNU C Library: Shared libraries
> athena% dpkg --status libc6
> Package: libc6
> Status: install ok installed
> Priority: required
> Section: libs
> Installed-Size: 11032
> Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
> Architecture: i386
> Source: glibc
> Version: 2.3.6.ds1-13
> Replaces: ldso (<= 1.9.11-9), timezone, timezones, gconv-modules, libtricks, libc6-bin, netkit-rpc, netbase (<< 4.0)
> Provides: glibc-2.3.6.ds1-1, glibc-2.3.6-2
> Depends: tzdata
> Suggests: locales, glibc-doc
> Conflicts: strace (<< 4.0-0), libnss-db (<= 2.2-6.1.1), timezone, timezones, gconv-modules, libtricks, libc6-doc, libc5 (<< 5.4.33-7), libpthread0 (<< 0.7-10), libc6-bin, libwcsmbs, apt (<< 0.3.0), libglib1.2 (<< 1.2.1-2), netkit-rpc, wine (<< 0.0.20031118-1), cyrus-imapd (<< 1.5.19-15), e2fsprogs (<< 1.35-7), initrd-tools (<< 0.1.84.1), libterm-readline-gnu-perl (<< 1.15-2)
> Conffiles:
> /etc/init.d/glibc.sh e962bedb636c5499e97ce457878a754a
> /etc/ld.so.conf.d/i486-linux-gnu.conf 36f09aeeab18f6af453d0a1db0a0942c
> Description: GNU C Library: Shared libraries
> Contains the standard libraries that are used by nearly all programs on
> the system. This package includes shared versions of the standard C library
> and the standard math library, as well as many others.
Whatever info should I present about my system?
--- End Message ---
--- Begin Message ---
Version: 2.5
balodja a écrit :
> Package: libc6
> Version: 2.3.6.ds1-13
> Severity: important
>
> Here is an example that demonstrates the bug:
>
>> % cat > test.c
>> #include <dlfcn.h>
>> #include <stdio.h>
>> #include <stdlib.h>
>>
>> int main() {
>> void *hdl;
>> char *libname = "librt.so", *errmsg;
>>
>> hdl = dlopen(libname, RTLD_NOW);
>> if(hdl == NULL) {
>> errmsg = dlerror();
>> if(errmsg == NULL) errmsg = "unknown error";
>> printf("dlopen fail: %s\n", errmsg);
>> } else {
>> dlclose(hdl);
>> printf("dlopen success\n");
>> }
>> return 0;
>> }
>> % gcc -ldl test.c
>> % ./a.out
>> dlopen fail: /usr/lib/librt.so: symbol __librt_multiple_threads,
>> version GLIBC_PRIVATE not defined in file libc.so.6 with link time
>> reference
>> %
>
By default your program is linked with the linuxthreads version of the
glibc. At runtime on 2.6 kernel, the NPTL version of the glibc is used
by default.
Such a mix is forbidden when dlopening glibc libraries. This can be
avoided by either using "/lib/tls/librt.so.1" for the library or by
using the environment variable LD_ASSUME_KERNEL=2.4.1 at runtime to
force the use of the linuxthreads.
Note that the bug is not present in glibc 2.5 which is NPTL only (hence
the versioned close).
--
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73
: :' : Debian developer | Electrical Engineer
`. `' aurel32@debian.org | aurelien@aurel32.net
`- people.debian.org/~aurel32 | www.aurel32.net
--- End Message ---