NetBSD Problem Report #39240

From www@NetBSD.org  Mon Jul 28 14:31:49 2008
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by narn.NetBSD.org (Postfix) with ESMTP id 978B463B99A
	for <gnats-bugs@gnats.netbsd.org>; Mon, 28 Jul 2008 14:31:49 +0000 (UTC)
Message-Id: <20080728143146.CEAB163B91E@narn.NetBSD.org>
Date: Mon, 28 Jul 2008 14:31:46 +0000 (UTC)
From: suetake@privatelink.org
Reply-To: suetake@privatelink.org
To: gnats-bugs@NetBSD.org
Subject: lighttpd cannot exec
X-Send-Pr-Version: www-1.0

>Number:         39240
>Category:       bin
>Synopsis:       lighttpd cannot exec
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    bin-bug-people
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Jul 28 14:35:00 +0000 2008
>Closed-Date:    Thu Oct 16 00:10:34 +0000 2008
>Last-Modified:  Sat Mar 17 18:30:14 +0000 2012
>Originator:     Satoshi Suetake
>Release:        NetBSD 4.99.70
>Organization:
none
>Environment:
NetBSD blackrose.kittymint.org 4.99.70 NetBSD 4.99.70 (BLACKROSE) #115: Thu Jul 24 10:20:42 JST 2008  root@blackrose.kittymint.org:/usr/src/sys/arch/i386/compile/BLACKROSE i386
>Description:
pkgsrc/www/lighttpd cannot exec after updating userland to latest NetBSD-current.

bash-3.2# /etc/rc.d/lighttpd start
Starting lighttpd.
2008-07-28 23:19:33: (plugin.c.205) /usr/pkg/lib/lighttpd/mod_indexfile.so: Trying to call undefined weak symbol `__register_frame_info' 
2008-07-28 23:19:33: (server.c.621) loading plugins finally failed 
bash-3.2# 

>How-To-Repeat:
install pkgsrc/www/lighttpd, and start it.

>Fix:
perhaps, /libexec/ld.elf_so changes affects this problem.

comment out below if-block at _rtld_find_symdef() function
in src/libexec/ld.elf_so/symbol.c, lighttpd can execute.

        /*         * If we found no definition and the reference is weak, treat the
         * symbol as having the value zero.
         */
        if (def == NULL && ELF_ST_BIND(ref->st_info) == STB_WEAK) {
/*
                if (in_plt) {
                        _rtld_error(
                            "%s: Trying to call undefined weak symbol `%s'",
                            refobj->path, name);
                }
*/
                rdbg(("  returning _rtld_sym_zero@_rtld_objself"));
                def = &_rtld_sym_zero;
                defobj = &_rtld_objself;
        }

>Release-Note:

>Audit-Trail:

Responsible-Changed-From-To: pkg-manager->tron
Responsible-Changed-By: tron@NetBSD.org
Responsible-Changed-When: Mon, 28 Jul 2008 21:10:49 +0000
Responsible-Changed-Why:
I'll try to handle this PR.


State-Changed-From-To: open->feedback
State-Changed-By: tron@NetBSD.org
State-Changed-When: Mon, 28 Jul 2008 21:10:49 +0000
State-Changed-Why:
This is not a "pkgsrc" related bug. It is a bug in "ld.elf_so" under
NetBSD-current. The fix was committed at the 25th. Please confirm
whether you still see the problem with an uptodate "ld.elf_so".


From: Satoshi Suetake <suetake@privatelink.org>
To: gnats-bugs@NetBSD.org
Cc: tron@NetBSD.org,
 pkg-manager@netbsd.org,
 netbsd-bugs@netbsd.org,
 gnats-admin@netbsd.org
Subject: Re: bin/39240 (lighttpd cannot exec)
Date: Tue, 29 Jul 2008 19:44:11 +0900

 On 2008/07/29, at 6:10, tron@NetBSD.org wrote:

 > Synopsis: lighttpd cannot exec
 >
 > Responsible-Changed-From-To: pkg-manager->tron
 > Responsible-Changed-By: tron@NetBSD.org
 > Responsible-Changed-When: Mon, 28 Jul 2008 21:10:49 +0000
 > Responsible-Changed-Why:
 > I'll try to handle this PR.
 >
 >
 > State-Changed-From-To: open->feedback
 > State-Changed-By: tron@NetBSD.org
 > State-Changed-When: Mon, 28 Jul 2008 21:10:49 +0000
 > State-Changed-Why:
 > This is not a "pkgsrc" related bug. It is a bug in "ld.elf_so" under
 > NetBSD-current. The fix was committed at the 25th. Please confirm
 > whether you still see the problem with an uptodate "ld.elf_so".


 It came to happen after committing on the 25th.
 I update ld.elf_so before few hours, but still happen.

 arch/i386/mdreloc.c:__RCSID("$NetBSD: mdreloc.c,v 1.26 2008/07/24  
 04:39:25 matt Exp $");
 rtld.c:__RCSID("$NetBSD: rtld.c,v 1.120 2008/07/24 04:39:25 matt Exp  
 $");
 symbol.c:__RCSID("$NetBSD: symbol.c,v 1.46 2008/07/24 04:39:25 matt  
 Exp $");

 --
 Satoshi Suetake
 suetake@privatelink.org


Responsible-Changed-From-To: tron->bin-bug-people
Responsible-Changed-By: tron@NetBSD.org
Responsible-Changed-When: Tue, 29 Jul 2008 12:11:15 +0000
Responsible-Changed-Why:
It needs to be handled by somebody who understands the run-time link-editor.


State-Changed-From-To: feedback->open
State-Changed-By: tron@NetBSD.org
State-Changed-When: Tue, 29 Jul 2008 12:11:15 +0000
State-Changed-Why:
Feedback was provided.


From: Matt Thomas <matt@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/39240 CVS commit: src/libexec/ld.elf_so
Date: Tue, 29 Jul 2008 16:27:01 +0000 (UTC)

 Module Name:	src
 Committed By:	matt
 Date:		Tue Jul 29 16:27:01 UTC 2008

 Modified Files:
 	src/libexec/ld.elf_so: reloc.c

 Log Message:
 Make sure to call dlerror() to clear any error messages after the relocations
 are done and there are no errors.  This will prevent spurious undefined weak
 symbol errors being returned by dlerror().

 Fixes PR bin/39240.


 To generate a diff of this commit:
 cvs rdiff -r1.95 -r1.96 src/libexec/ld.elf_so/reloc.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->feedback
State-Changed-By: snj@NetBSD.org
State-Changed-When: Wed, 15 Oct 2008 20:16:07 +0000
State-Changed-Why:
Can you confirm that matt's fix (revision 1.96 of reloc.c) fixes the
problem for you?


From: Satoshi Suetake <suetake@privatelink.org>
To: gnats-bugs@NetBSD.org
Cc: gnats-admin@netbsd.org,
 netbsd-bugs@netbsd.org,
 snj@NetBSD.org
Subject: Re: bin/39240 (lighttpd cannot exec)
Date: Thu, 16 Oct 2008 07:37:07 +0900

 --Apple-Mail-1-989891388
 Content-Type: text/plain;
 	charset=US-ASCII;
 	format=flowed
 Content-Transfer-Encoding: 7bit


 On 2008/10/16, at 5:16, snj@NetBSD.org wrote:

 > Synopsis: lighttpd cannot exec
 >
 > State-Changed-From-To: open->feedback
 > State-Changed-By: snj@NetBSD.org
 > State-Changed-When: Wed, 15 Oct 2008 20:16:07 +0000
 > State-Changed-Why:
 > Can you confirm that matt's fix (revision 1.96 of reloc.c) fixes the
 > problem for you?


 It was confirmed that this problem fixed.
 thanks.

 --
 Satoshi Suetake
 suetake@privatelink.org



 --Apple-Mail-1-989891388
 Content-Type: text/html;
 	charset=US-ASCII
 Content-Transfer-Encoding: quoted-printable

 <html><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
 -webkit-line-break: after-white-space; "><div><br></div><div>On =
 2008/10/16, at 5:16, <a href=3D"mailto:snj@NetBSD.org">snj@NetBSD.org</a> =
 wrote:</div><div><br class=3D"Apple-interchange-newline"><blockquote =
 type=3D"cite"><div>Synopsis: lighttpd cannot =
 exec<br><br>State-Changed-From-To: open->feedback<br>State-Changed-By: =
 <a =
 href=3D"mailto:snj@NetBSD.org">snj@NetBSD.org</a><br>State-Changed-When: =
 Wed, 15 Oct 2008 20:16:07 +0000<br>State-Changed-Why:<br>Can you confirm =
 that matt's fix (revision 1.96 of reloc.c) fixes the<br>problem for =
 you?<br></div></blockquote></div><div><br></div><div><span =
 class=3D"Apple-style-span" style=3D"font-family: 'Lucida Grande'; =
 font-size: 11px; white-space: pre-wrap; =
 -webkit-border-horizontal-spacing: 3px; -webkit-border-vertical-spacing: =
 3px; ">It was confirmed that this problem =
 fixed.</span></div><div>thanks.</div><br><div =
 apple-content-edited=3D"true"> <div style=3D"word-wrap: break-word; =
 -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; =
 "><div>--</div><div>Satoshi Suetake</div><div><a =
 href=3D"mailto:suetake@privatelink.org">suetake@privatelink.org</a></div><=
 div><br class=3D"khtml-block-placeholder"></div></div> =
 </div><br></body></html>=

 --Apple-Mail-1-989891388--

State-Changed-From-To: feedback->closed
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Thu, 16 Oct 2008 00:10:34 +0000
State-Changed-Why:
Confirmed fixed, thanks :-)


From: Christos Zoulas <christos@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/39240 CVS commit: src/libexec/ld.elf_so
Date: Wed, 13 Jan 2010 15:17:23 -0500

 Module Name:	src
 Committed By:	christos
 Date:		Wed Jan 13 20:17:23 UTC 2010

 Modified Files:
 	src/libexec/ld.elf_so: reloc.c rtld.h symbol.c
 	src/libexec/ld.elf_so/arch/alpha: alpha_reloc.c
 	src/libexec/ld.elf_so/arch/arm: mdreloc.c
 	src/libexec/ld.elf_so/arch/hppa: hppa_reloc.c
 	src/libexec/ld.elf_so/arch/i386: mdreloc.c
 	src/libexec/ld.elf_so/arch/m68k: mdreloc.c
 	src/libexec/ld.elf_so/arch/mips: mips_reloc.c
 	src/libexec/ld.elf_so/arch/powerpc: ppc_reloc.c
 	src/libexec/ld.elf_so/arch/sh3: mdreloc.c
 	src/libexec/ld.elf_so/arch/sparc: mdreloc.c
 	src/libexec/ld.elf_so/arch/sparc64: mdreloc.c
 	src/libexec/ld.elf_so/arch/vax: mdreloc.c
 	src/libexec/ld.elf_so/arch/x86_64: mdreloc.c

 Log Message:
 PR/39240: Satoshi Suetake: Don't fail when attempting to resolve weak symbols
 when we are doing immediate binding, leave them alone and they will be dealt
 with later during lazy binding. From skrll@


 To generate a diff of this commit:
 cvs rdiff -u -r1.97 -r1.98 src/libexec/ld.elf_so/reloc.c
 cvs rdiff -u -r1.83 -r1.84 src/libexec/ld.elf_so/rtld.h
 cvs rdiff -u -r1.49 -r1.50 src/libexec/ld.elf_so/symbol.c
 cvs rdiff -u -r1.33 -r1.34 src/libexec/ld.elf_so/arch/alpha/alpha_reloc.c
 cvs rdiff -u -r1.30 -r1.31 src/libexec/ld.elf_so/arch/arm/mdreloc.c
 cvs rdiff -u -r1.30 -r1.31 src/libexec/ld.elf_so/arch/hppa/hppa_reloc.c
 cvs rdiff -u -r1.28 -r1.29 src/libexec/ld.elf_so/arch/i386/mdreloc.c
 cvs rdiff -u -r1.24 -r1.25 src/libexec/ld.elf_so/arch/m68k/mdreloc.c
 cvs rdiff -u -r1.56 -r1.57 src/libexec/ld.elf_so/arch/mips/mips_reloc.c
 cvs rdiff -u -r1.43 -r1.44 src/libexec/ld.elf_so/arch/powerpc/ppc_reloc.c
 cvs rdiff -u -r1.26 -r1.27 src/libexec/ld.elf_so/arch/sh3/mdreloc.c
 cvs rdiff -u -r1.42 -r1.43 src/libexec/ld.elf_so/arch/sparc/mdreloc.c
 cvs rdiff -u -r1.45 -r1.46 src/libexec/ld.elf_so/arch/sparc64/mdreloc.c
 cvs rdiff -u -r1.25 -r1.26 src/libexec/ld.elf_so/arch/vax/mdreloc.c
 cvs rdiff -u -r1.35 -r1.36 src/libexec/ld.elf_so/arch/x86_64/mdreloc.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Manuel Bouyer" <bouyer@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/39240 CVS commit: [netbsd-5] src
Date: Sat, 17 Mar 2012 18:28:42 +0000

 Module Name:	src
 Committed By:	bouyer
 Date:		Sat Mar 17 18:28:39 UTC 2012

 Modified Files:
 	src/distrib/sets/lists/comp [netbsd-5]: mi
 	src/include [netbsd-5]: link_elf.h
 	src/lib/libc/dlfcn [netbsd-5]: dlfcn_elf.c
 	src/libexec/ld.elf_so [netbsd-5]: Makefile headers.c load.c
 	    map_object.c reloc.c rtld.c rtld.h symbol.c
 	src/libexec/ld.elf_so/arch/alpha [netbsd-5]: alpha_reloc.c
 	src/libexec/ld.elf_so/arch/arm [netbsd-5]: mdreloc.c
 	src/libexec/ld.elf_so/arch/hppa [netbsd-5]: hppa_reloc.c
 	src/libexec/ld.elf_so/arch/i386 [netbsd-5]: mdreloc.c
 	src/libexec/ld.elf_so/arch/m68k [netbsd-5]: mdreloc.c
 	src/libexec/ld.elf_so/arch/mips [netbsd-5]: mips_reloc.c
 	src/libexec/ld.elf_so/arch/powerpc [netbsd-5]: ppc_reloc.c
 	src/libexec/ld.elf_so/arch/sh3 [netbsd-5]: mdreloc.c
 	src/libexec/ld.elf_so/arch/sparc [netbsd-5]: mdreloc.c
 	src/libexec/ld.elf_so/arch/sparc64 [netbsd-5]: mdreloc.c
 	src/libexec/ld.elf_so/arch/vax [netbsd-5]: mdreloc.c
 	src/libexec/ld.elf_so/arch/x86_64 [netbsd-5]: mdreloc.c
 	src/rescue [netbsd-5]: list.ldd
 	src/share/man/man3 [netbsd-5]: Makefile
 	src/sys/sys [netbsd-5]: exec_elf.h
 	src/usr.bin/ldd [netbsd-5]: ldd.c
 Added Files:
 	src/share/man/man3 [netbsd-5]: dl_iterate_phdr.3

 Log Message:
 Pull up following revision(s) via patch (requested by skrll in ticket #1724):
 	rescue/list.ldd: revision 1.4
 	lib/libc/dlfcn/dlfcn_elf.c: revision 1.7
 	libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.57
 	distrib/sets/lists/comp/mi: revision 1.1512
 	share/man/man3/Makefile: revision 1.56
 	libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.58
 	usr.bin/ldd/ldd.c: revision 1.15
 	libexec/ld.elf_so/rtld.h: revision 1.84
 	share/man/man3/dl_iterate_phdr.3: revision 1.1
 	libexec/ld.elf_so/rtld.c: revision 1.129
 	libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.44
 	libexec/ld.elf_so/rtld.h: revision 1.89
 	libexec/ld.elf_so/arch/x86_64/mdreloc.c: revision 1.36
 	libexec/ld.elf_so/map_object.c: revision 1.41
 	libexec/ld.elf_so/arch/x86_64/mdreloc.c: revision 1.37
 	libexec/ld.elf_so/arch/sparc64/mdreloc.c: revision 1.46
 	include/link_elf.h: revision 1.10
 	libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.29
 	libexec/ld.elf_so/arch/vax/mdreloc.c: revision 1.26
 	libexec/ld.elf_so/arch/alpha/alpha_reloc.c: revision 1.34
 	libexec/ld.elf_so/arch/hppa/hppa_reloc.c: revision 1.31
 	libexec/ld.elf_so/arch/alpha/alpha_reloc.c: revision 1.35
 	libexec/ld.elf_so/Makefile: revision 1.94
 	libexec/ld.elf_so/arch/hppa/hppa_reloc.c: revision 1.32
 	libexec/ld.elf_so/Makefile: revision 1.95
 	libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.31
 	libexec/ld.elf_so/Makefile: revision 1.96
 	libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.32
 	libexec/ld.elf_so/reloc.c: revision 1.98
 	libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.33
 	sys/sys/exec_elf.h: revision 1.106
 	libexec/ld.elf_so/rtld.c: revision 1.130
 	libexec/ld.elf_so/load.c: revision 1.37
 	libexec/ld.elf_so/rtld.c: revision 1.131
 	libexec/ld.elf_so/load.c: revision 1.38
 	libexec/ld.elf_so/rtld.h: revision 1.90
 	libexec/ld.elf_so/headers.c: revision 1.36
 	libexec/ld.elf_so/rtld.h: revision 1.95
 	libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.30
 	libexec/ld.elf_so/arch/m68k/mdreloc.c: revision 1.25
 	libexec/ld.elf_so/symbol.c: revision 1.50
 	libexec/ld.elf_so/symbol.c: revision 1.51
 	libexec/ld.elf_so/arch/sparc/mdreloc.c: revision 1.43
 	libexec/ld.elf_so/symbol.c: revision 1.52
 	libexec/ld.elf_so/arch/sh3/mdreloc.c: revision 1.27
 	libexec/ld.elf_so/symbol.c: revision 1.54
 PR/39240: Satoshi Suetake: Don't fail when attempting to resolve weak symbols
 when we are doing immediate binding, leave them alone and they will be dealt
 with later during lazy binding. From skrll@
 Implement negative cache checks for symbol lookups.
 Uses the Donelist idea from FreeBSD.
 Use alloca(3) instead of local xmalloc for creating our DoneLists.
 This allows threaded programs to use us a little better, PR lib/43005.
 Implement dl_iterate_phdr.
 Somewhat taken from FreeBSD. Manual page from OpenBSD.


 To generate a diff of this commit:
 cvs rdiff -u -r1.1201.2.17 -r1.1201.2.18 src/distrib/sets/lists/comp/mi
 cvs rdiff -u -r1.7.28.1 -r1.7.28.2 src/include/link_elf.h
 cvs rdiff -u -r1.5.32.1 -r1.5.32.2 src/lib/libc/dlfcn/dlfcn_elf.c
 cvs rdiff -u -r1.87.2.1 -r1.87.2.2 src/libexec/ld.elf_so/Makefile
 cvs rdiff -u -r1.26.10.1 -r1.26.10.2 src/libexec/ld.elf_so/headers.c
 cvs rdiff -u -r1.35 -r1.35.12.1 src/libexec/ld.elf_so/load.c
 cvs rdiff -u -r1.36.4.2 -r1.36.4.3 src/libexec/ld.elf_so/map_object.c
 cvs rdiff -u -r1.96.4.2 -r1.96.4.3 src/libexec/ld.elf_so/reloc.c
 cvs rdiff -u -r1.123.2.2 -r1.123.2.3 src/libexec/ld.elf_so/rtld.c
 cvs rdiff -u -r1.79.4.3 -r1.79.4.4 src/libexec/ld.elf_so/rtld.h
 cvs rdiff -u -r1.47.4.2 -r1.47.4.3 src/libexec/ld.elf_so/symbol.c
 cvs rdiff -u -r1.31 -r1.31.4.1 src/libexec/ld.elf_so/arch/alpha/alpha_reloc.c
 cvs rdiff -u -r1.28 -r1.28.4.1 src/libexec/ld.elf_so/arch/arm/mdreloc.c
 cvs rdiff -u -r1.27 -r1.27.4.1 src/libexec/ld.elf_so/arch/hppa/hppa_reloc.c
 cvs rdiff -u -r1.26 -r1.26.4.1 src/libexec/ld.elf_so/arch/i386/mdreloc.c
 cvs rdiff -u -r1.22 -r1.22.4.1 src/libexec/ld.elf_so/arch/m68k/mdreloc.c
 cvs rdiff -u -r1.53 -r1.53.4.1 src/libexec/ld.elf_so/arch/mips/mips_reloc.c
 cvs rdiff -u -r1.41 -r1.41.4.1 src/libexec/ld.elf_so/arch/powerpc/ppc_reloc.c
 cvs rdiff -u -r1.24 -r1.24.4.1 src/libexec/ld.elf_so/arch/sh3/mdreloc.c
 cvs rdiff -u -r1.41 -r1.41.4.1 src/libexec/ld.elf_so/arch/sparc/mdreloc.c
 cvs rdiff -u -r1.43 -r1.43.4.1 src/libexec/ld.elf_so/arch/sparc64/mdreloc.c
 cvs rdiff -u -r1.23 -r1.23.4.1 src/libexec/ld.elf_so/arch/vax/mdreloc.c
 cvs rdiff -u -r1.32 -r1.32.4.1 src/libexec/ld.elf_so/arch/x86_64/mdreloc.c
 cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/rescue/list.ldd
 cvs rdiff -u -r1.32 -r1.32.2.1 src/share/man/man3/Makefile
 cvs rdiff -u -r0 -r1.2.10.2 src/share/man/man3/dl_iterate_phdr.3
 cvs rdiff -u -r1.95 -r1.95.10.1 src/sys/sys/exec_elf.h
 cvs rdiff -u -r1.2.12.3 -r1.2.12.4 src/usr.bin/ldd/ldd.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.