Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 May 2006 10:29:58 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        m m <needacoder@gmail.com>
Cc:        stable@freebsd.org, Alexander Kabaev <kabaev@gmail.com>
Subject:   Re: improper handling of dlpened's C++/atexit() code?
Message-ID:  <20060516072957.GB54541@deviant.kiev.zoral.com.ua>
In-Reply-To: <1e4841eb0605152058n69d4e7b8m27d3944d9af8a346@mail.gmail.com>
References:  <1e4841eb0605111757t36fdf8cfv267799a17dffc650@mail.gmail.com> <20060514195510.783fa765@kan.dnsalias.net> <1e4841eb0605152058n69d4e7b8m27d3944d9af8a346@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--/WwmFnJnmDyWGHa4
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, May 15, 2006 at 11:58:32PM -0400, m m wrote:
> On 5/14/06, Alexander Kabaev <kabaev@gmail.com> wrote:
> >On Thu, 11 May 2006 20:57:20 -0400
> >"m m" <needacoder@gmail.com> wrote:
> >
> >>  I am writing in regard to PR at
> >> http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dbin%2F59552 .  I am
> >> experiencing behavior on 6.1-PRERELEASE FreeBSD 6.1-PRERELEASE #11:
> >> Sun Mar 26 00:03:52 EST 2006 which looks a lot like something that
> >> would be caused by this PR. This happens when apache-1.3 processes
> >> that run with Mason code receive a SIGUSR1 (when newsyslog does log
> >> rotation) and apache gracefully kills off all processes when
> >> restarting.  The following is the stack trace that lead me to this PR:
> >You'll need to build ld-elf.so.1 and libc.so.6 to get a sensible
> >backtrace.
>=20
> Please find the new stack trace below.  If there is more information I
> can provide, just ask.  (This is 6.1-STABLE, cvsup very shortly before
> May 11 23:14 EDT)
>=20
> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000 in ?? ()
> (gdb) bt
> #0  0x00000000 in ?? ()
> #1  0x294c0ad8 in __do_global_dtors_aux () from
> /usr/local/lib/perl5/5.8.8/mach/auto/Sys/Syslog/Syslog.so
> #2  0x294c1d4c in _fini () from
> /usr/local/lib/perl5/5.8.8/mach/auto/Sys/Syslog/Syslog.so
> #3  0x280b4c80 in ?? ()
> #4  0x280aaab8 in ?? () from /libexec/ld-elf.so.1
> #5  0xbfbfe6e8 in ?? ()
> #6  0x2808dca6 in objlist_call_fini (list=3D0x280a96d8) at
> /usr/src/libexec/rtld-elf/rtld.c:1336
> #7  0x2808e1d4 in rtld_exit () at /usr/src/libexec/rtld-elf/rtld.c:1528
> #8  0x281d58ea in __cxa_finalize (dso=3D0x0) at
> /usr/src/lib/libc/stdlib/atexit.c:184
> #9  0x281d55ba in exit (status=3D0) at /usr/src/lib/libc/stdlib/exit.c:69
> #10 0x0805d0cb in clean_child_exit ()
> #11 0x0805ea77 in just_die ()
> #12 0x0805ea9a in usr1_handler ()
> #13 0xbfbfffb4 in ?? ()
> #14 0x0000001e in ?? ()
> #15 0x00000000 in ?? ()
> #16 0xbfbfe7c0 in ?? ()
> #17 0x00000002 in ?? ()
> #18 0x0805ea80 in just_die ()
> #19 0x0806011e in child_main ()
> #20 0x080607de in make_child ()
> #21 0x08060868 in startup_children ()
> #22 0x08060e81 in standalone_main ()
> #23 0x08061702 in main ()

The simplest way to get rtld and libc with debug symbols installed is
as follows, assuming you have sources in /usr/src and complete buildworld
result in /usr/obj:

# cd /usr/src
# make buildenv
# CFLAGS=3D-g; export CFLAGS
# STRIP=3D""; export STRIP
# cd libexec/rtld-elf
# make clean depend all install
# cd ../../lib/libc
# make clean depend all install

After that the file command shall show that the libc and rtld are
unstripped:

# file ../p/libexec/ld-elf.so.1
=2E./p/libexec/ld-elf.so.1: ELF 32-bit LSB shared object, Intel 80386, vers=
ion 1 (FreeBSD), not stripped

The compiled binaries are be identical to currently installed, except symbo=
ls
shall be present.

--/WwmFnJnmDyWGHa4
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (FreeBSD)

iD8DBQFEaX91C3+MBN1Mb4gRAnH3AJ9NZyy0rX4NNKDtZNs9we1nL1LddwCfaiyH
bEqWaaOCQNAB+dTnftejzuA=
=ADBL
-----END PGP SIGNATURE-----

--/WwmFnJnmDyWGHa4--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060516072957.GB54541>