From owner-freebsd-bugs@FreeBSD.ORG Thu Jan 4 18:00:37 2007 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6F36B16A407 for ; Thu, 4 Jan 2007 18:00:37 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id 4F33713C459 for ; Thu, 4 Jan 2007 18:00:37 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id l04I0Wds051855 for ; Thu, 4 Jan 2007 18:00:32 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id l04I0Wd4051854; Thu, 4 Jan 2007 18:00:32 GMT (envelope-from gnats) Resent-Date: Thu, 4 Jan 2007 18:00:32 GMT Resent-Message-Id: <200701041800.l04I0Wd4051854@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Roy Marples Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7E82116A415 for ; Thu, 4 Jan 2007 17:51:05 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [69.147.83.33]) by mx1.freebsd.org (Postfix) with ESMTP id 6FD4613C44B for ; Thu, 4 Jan 2007 17:51:05 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.13.1/8.13.1) with ESMTP id l04Hp5bl074707 for ; Thu, 4 Jan 2007 17:51:05 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.13.1/8.13.1/Submit) id l04Hp5Kt074706; Thu, 4 Jan 2007 17:51:05 GMT (envelope-from nobody) Message-Id: <200701041751.l04Hp5Kt074706@www.freebsd.org> Date: Thu, 4 Jan 2007 17:51:05 GMT From: Roy Marples To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.0 Cc: Subject: misc/107529: ldd aborts abruptly if a shared library is missing X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Jan 2007 18:00:37 -0000 >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: