Date: Thu, 4 Jan 2007 17:51:05 GMT From: Roy Marples<uberlord@gentoo.org> To: freebsd-gnats-submit@FreeBSD.org Subject: misc/107529: ldd aborts abruptly if a shared library is missing Message-ID: <200701041751.l04Hp5Kt074706@www.freebsd.org> Resent-Message-ID: <200701041800.l04I0Wd4051854@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 107529 >Category: misc >Synopsis: ldd aborts abruptly if a shared library is missing >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Jan 04 18:00:31 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Roy Marples >Release: FreeBSD-6.2_rc2 >Organization: Gentoo >Environment: FreeBSD uberlaptop 6.2-RC2 FreeBSD Gentoo 6.2_rc2 #0: Sun Dec 31 16:44:50 GMT 2006 root@uberlaptop:/usr/src/sys-6.2_rc2/i386/compile/UBERKERNEL i386 >Description: ldd aborts abruptly if a shared library is missing. Example: uberlaptop rtld-elf # ldd /usr/lib/libgtk-x11-2.0.so.0 /usr/lib/libgtk-x11-2.0.so.0: ldd: /usr/lib/libgtk-x11-2.0.so.0: Shared object "libcairo.so.12" not found, required by "libgtk-x11-2.0.so.0" /usr/lib/libgtk-x11-2.0.so.0: exit status 1 Whereas expected output would be: uberlaptop rtld-elf # ldd /usr/lib/libgtk-x11-2.0.so.0 /usr/lib/libgtk-x11-2.0.so.0: libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x284bb000) libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x284d1000) libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x28555000) libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x2855e000) libXau.so.6 => /usr/lib/libXau.so.6 (0x28598000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x2859b000) libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x285a0000) libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x285b9000) libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x285f2000) libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x285f5000) libintl.so.8 => /lib/libintl.so.8 (0x28687000) libiconv.so.2 => /lib/libiconv.so.2 (0x28690000) libcairo.so.12 => not found (0x0) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x2876e000) libz.so.1 => /lib/libz.so.1 (0x287db000) libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x287ed000) libexpat.so.1 => /usr/lib/libexpat.so.1 (0x28817000) libglitz.so.1 => /usr/lib/libglitz.so.1 (0x28836000) libpng12.so.0 => /usr/lib/libpng12.so.0 (0x28859000) libXrender.so.1 => /usr/lib/libXrender.so.1 (0x2887d000) libX11.so.6 => /usr/lib/libX11.so.6 (0x28885000) libm.so.4 => /lib/libm.so.4 (0x28970000) libgcc_s.so.1 => /usr/lib/gcc/i686-gentoo-freebsd6.2/4.1.1/libgcc_s.so.1 (0x2816f000) libcairo.so.12 => not found (0x0) libXi.so.6 => /usr/lib/libXi.so.6 (0x28987000) libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x2898f000) libXext.so.6 => /usr/lib/libXext.so.6 (0x28993000) libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x289a1000) libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x289b3000) libcairo.so.12 => not found (0x0) libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x289b8000) libc.so.6 => /lib/libc.so.6 (0x28089000) librpcsvc.so.3 => /usr/lib/librpcsvc.so.3 (0x289e4000) >How-To-Repeat: Remove any library (non critical obviously) and ldd a binary that requires it. >Fix: Apply below patch :) It should be safe as functionality is only changed if called from ldd. diff -ur libexec.orig/rtld-elf/rtld.c libexec/rtld-elf/rtld.c --- libexec.orig/rtld-elf/rtld.c 2007-01-04 17:21:32 +0000 +++ libexec/rtld-elf/rtld.c 2007-01-04 17:19:14 +0000 @@ -1266,8 +1266,12 @@ char **curpath = paths; needed->obj = NULL; - if (paths == NULL) - return -1; + if (paths == NULL) { + if (ld_tracing) + continue; + else + return -1; + } while(*curpath) { if (needed->obj == NULL) { >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200701041751.l04Hp5Kt074706>