From owner-freebsd-current@freebsd.org Fri Jan 27 17:19:24 2017 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 741ABCC3A8B for ; Fri, 27 Jan 2017 17:19:24 +0000 (UTC) (envelope-from kabaev@gmail.com) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id 50BCAFE0 for ; Fri, 27 Jan 2017 17:19:24 +0000 (UTC) (envelope-from kabaev@gmail.com) Received: by mailman.ysv.freebsd.org (Postfix) id 4D23ACC3A8A; Fri, 27 Jan 2017 17:19:24 +0000 (UTC) Delivered-To: current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4CC35CC3A89 for ; Fri, 27 Jan 2017 17:19:24 +0000 (UTC) (envelope-from kabaev@gmail.com) Received: from mail-yw0-x244.google.com (mail-yw0-x244.google.com [IPv6:2607:f8b0:4002:c05::244]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 12C5DFDF; Fri, 27 Jan 2017 17:19:23 +0000 (UTC) (envelope-from kabaev@gmail.com) Received: by mail-yw0-x244.google.com with SMTP id l16so4922222ywb.2; Fri, 27 Jan 2017 09:19:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version; bh=eMasRs5UmurMNbmpD0kBo3RLtUa1FPG8//35UByOd0A=; b=bOOYAft2yOmdyBPagsecIPfofxjfjMfshEXUBO4RbJISCxH83Ul+sPi4cL3E7PJE0y eULRCNzgc4Yv2R4kBCjO/r8iEXNh0dQef2gbiROspziu+CpoJ52cz8+L8ZbrkfHfwB9T b3rHSrtcYInF2wMJM6ts0DkHanZf+TfObcxJJkhVMp2tOkn4sjuCRrCGwR0YKRDOLCWc lgTb/Sd6mZAJ44fCBJPGtbNM2djfO5UnOwl+MD+JYh9f20c9W9o1rbnOp9rAESHyr7h5 /8F6qKvsgaMfl0cvlmhn8PhzPeH+m5uM912qh36CP8iNvGDTMPzakRI4xr/dG/y6tT6L fwKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version; bh=eMasRs5UmurMNbmpD0kBo3RLtUa1FPG8//35UByOd0A=; b=H6R3UZvJGgbZHK+mkRBBUf9wN7De6z7ROaI6VF63v0KukVxb2f8rBlW8iq5x9Q0gJ7 WyFC3KdZjOHP3+XIJ4bD3yeusv2dBiBEkcrs/NIiO3y/aqL9j4ZiMqtj9zfTytlPIDaF BlntU0rFZnMqjlIr7to3KvVtJjZvvrPdxY/zhyBmRUY7IS0c6Q4U5BAjqP7QTDXpmhv2 fRdxvj+sT/F/A97Tsd+Ag4dD8zuXgcLWhIb5BOar6r4eB8Xj+sjR7WwNiURGPC8wa+SY HVPMkQ48GPRUn6gwjAGa1MsrEt6x8heRiowgiX5lx2giioDV0linf48gBs15g5QZojap x5ew== X-Gm-Message-State: AIkVDXKXz0FfhsNBCRhkpia/o9171RwpSdyqw1ntHOt5MjScoCBPhLkIoWy7C+/V/gYSGA== X-Received: by 10.55.143.3 with SMTP id r3mr9602531qkd.152.1485537562779; Fri, 27 Jan 2017 09:19:22 -0800 (PST) Received: from kan ([2601:18f:802:4680:226:18ff:fe00:232e]) by smtp.gmail.com with ESMTPSA id r57sm4623593qtr.27.2017.01.27.09.19.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 27 Jan 2017 09:19:22 -0800 (PST) Date: Fri, 27 Jan 2017 12:19:16 -0500 From: Alexander Kabaev To: Don Lewis Cc: current@FreeBSD.org Subject: Re: malloc() call somehow calling the rtld malloc() implementaion Message-ID: <20170127121916.6d675d26@kan> In-Reply-To: <201701270831.v0R8VUsC018788@gw.catspoiler.org> References: <201701270831.v0R8VUsC018788@gw.catspoiler.org> X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.29; amd64-portbld-freebsd12.0) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/s/2HiUiKqwG4NbCMhT04syM"; protocol="application/pgp-signature" X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2017 17:19:24 -0000 --Sig_/s/2HiUiKqwG4NbCMhT04syM Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Fri, 27 Jan 2017 00:31:30 -0800 (PST) Don Lewis wrote: > I've been attempting to get OpenOffice to build properly in a > clang400-import poudriere jail and have run into a mystery. The build > procedure creates a c++ executable "idlc", which is used to build > other stuff. The new operator has been overrriden to call a custom > memory allocator, which I have configured to call the system version > of malloc(). >=20 > At some point idlc crashes because it has allocated a 16 byte > structure and the compiler is using "movaps %xmm0,(%rax)" to > initialize it, which requires 16 byte alignment. Unfortunately this > structure is only 8 byte aligned, causing a bus error. This > shouldn't be happening because our system malloc() always seems to do > the proper alignment. It appears that intead of calling the version > of malloc() in libc, the simple version of malloc() built into rtld > is being called instead. >=20 > GNU gdb 6.1.1 [FreeBSD] > Copyright 2004 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and > you are welcome to change it and/or distribute copies of it under > certain conditions. Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for > details. This GDB was configured as "amd64-marcel-freebsd"... > (gdb) break main > Breakpoint 1 at 0x43b1f6: file idlcmain.cxx, line 34. > (gdb) run @/tmp/r > Starting > program: /wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/= solver/420/unxfbsdx.pro/bin/idlc > @/tmp/r [New LWP 101304] [New Thread 802616000 (LWP 101304/idlc)] > [Switching to Thread 802616000 (LWP 101304/idlc)] >=20 > Breakpoint 1, main (argc=3D2, argv=3D0x7fffffffb278) at idlcmain.cxx:34 > 34 SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) > (gdb) break malloc > Breakpoint 2 at 0x8006a5f01: > file /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c, > line 163. (gdb) cont Continuing. > Trace 12474/1: "Min Prioriy for policy '2' =3D=3D '0' > " > Trace 12474/1: "Max Prioriy for policy '2' =3D=3D '103' > " > /wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/42= 0/unxfbsdx.pro/bin/idlc: > compiling 1 source files ... > Compiling: /wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/mai= n/offapi/com/sun/star/i18n/KParseTokens.idl >=20 > Breakpoint 2, malloc (nbytes=3D343) > at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc= .c:163 > 163 /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c: > No such file or directory. > in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c > Current language: auto; currently minimal (gdb) cont > Continuing. >=20 > Breakpoint 2, malloc (nbytes=3D32) > at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc= .c:163 > 163 > in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c > (gdb) cont Continuing. > Trace 13112/2: "ChildStatusProc : starting > '/wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/4= 20/unxfbsdx.pro/bin/ucpp'" [New > Thread 802616500 (LWP 100249/idlc)] [Switching to Thread 802616500 > (LWP 100249/idlc)] >=20 > Breakpoint 2, malloc (nbytes=3D19) > at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc= .c:163 > 163 > in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c > (gdb) cont Continuing. >=20 > Breakpoint 2, malloc (nbytes=3D34) > at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc= .c:163 > 163 > in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c > (gdb) cont Continuing. >=20 > Breakpoint 2, malloc (nbytes=3D16) > at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc= .c:163 > 163 > in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c > (gdb) cont Continuing. >=20 > Breakpoint 2, malloc (nbytes=3D16) > at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc= .c:163 > 163 > in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c > (gdb) cont Continuing. >=20 > Breakpoint 2, malloc (nbytes=3D16) > at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc= .c:163 > 163 > in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c > (gdb) cont Continuing. >=20 > Breakpoint 2, malloc (nbytes=3D16) > at /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc= .c:163 > 163 > in /var/poudriere/jails/clang400amd64/usr/src/libexec/rtld-elf/malloc.c > (gdb) cont Continuing. > sizeof(AstExprValue)=3D16 >=20 > Program received signal SIGBUS, Bus error. > [Switching to Thread 802616000 (LWP 101304/idlc)] > 0x0000000000478cc2 in AstExpression::eval_bit_op (this=3D0x802633dc8,=20 > ek=3DEK_const) at astexpression.cxx:1001 > 1001 std::auto_ptr< AstExprValue > retval(new > AstExprValue()); >=20 >=20 > idlc is linked to libc.so: >=20 > /wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solver/42= 0/unxfbsdx.pro/bin/idlc: > libreg.so.3 > =3D> /wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solv= er/420/unxfbsdx.pro/lib/libreg.so.3 > (0x8008b9000) libuno_sal.so.3 > =3D> /wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solv= er/420/unxfbsdx.pro/lib/libuno_sal.so.3 > (0x800c00000) libuno_salhelpergcc3.so.3 > =3D> /wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solv= er/420/unxfbsdx.pro/lib/libuno_salhelpergcc3.so.3 > (0x801040000) libm.so.5 =3D> /lib/libm.so.5 (0x801244000) libc++.so.1 > =3D> /usr/lib/libc++.so.1 (0x80146e000) libcxxrt.so.1 > =3D> /lib/libcxxrt.so.1 (0x801735000) libgcc_s.so.1 > =3D> /lib/libgcc_s.so.1 (0x801953000) libthr.so.3 =3D> /lib/libthr.so.3 > (0x801b69000) libc.so.7 =3D> /lib/libc.so.7 (0x801d91000) libstore.so.3 > =3D> /wrkdirs/usr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solv= er/420/unxfbsdx.pro/lib/libstore.so.3 > (0x802152000) >=20 >=20 > If I create a simple test program that calls malloc() and set a > breakpoint in malloc(), the breakpoint gets set in the rtld version, > but the the libc version of malloc is what gets called. >=20 > What the heck is going on here, and how can I fix it? >=20 rtld on my system does not have malloc exposed as dynamic symbol, it cannot possibly be used for symbol resolution by any outside module. --=20 Alexander Kabaev --Sig_/s/2HiUiKqwG4NbCMhT04syM Content-Type: application/pgp-signature Content-Description: Цифровая подпись OpenPGP -----BEGIN PGP SIGNATURE----- iQKTBAEBCgB9FiEExffZlZm2QeE8UVaRBxMimZJ5Ln4FAliLgRRfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEM1 RjdEOTk1OTlCNjQxRTEzQzUxNTY5MTA3MTMyMjk5OTI3OTJFN0UACgkQBxMimZJ5 Ln5AOQ//UMSXfNLDi8eoN4/ck0uX2aD0o906HNLkK+XUMuroY21DZTA2nVmvdM7W BAuVQ8VRT80qjLqU2huWXTz11urqpOeEAY3nzNMn1nkAgT27oD9LPRleSZnZCKbS N7JHgME8e/E98LMuQQogEK6ixksYLN3PP5SLbm5aN5ysXRI+BiDt7MXp132V3pju hguDzBpN31aNrgwgycC8tiGlMQvxpD1f/If+Kvw6N8Zf9JRwJ7mWN/sgx8uMO//H RmoKT1YpeVuDmKi1Aa5IMBoLksdR0xmJGQaPLp+rdnLvz4W1Ut5jIrTvgGI0QzAw lSRSzPm+RFnemeFXbhMjcgNSAi0SjgbKCIqnW9AGznEzd4F6he1ondxSEP1DBgSK OYQDftIKcJKc2z/+qeJyqe2TnGzh8LzLY5qUBWHHEoIFsd0Al2JCfKmSM2tMgm4I IkIQNaSFGlFzuBAGoRyBoCk+gnVj8TngRNs6aWJopucMRmjQFZ7Ll/KccuWHo5hN EfydlaN1PiKt1DWp42m9oQMMwJdpLC75Ug5NnitOMuIunB9lrVyla3M69d3dBfXF umvUTiiqguHCr6BpeVV67tAszfG/P0YIsgs47UiHUjrwEmLVFPc/SWlGBiVYjL9v N9sBgmGO9fGFSVHsuOCZq9MIREjIrU6g7zz8Pf7scbcDg7CGnI8= =XbZz -----END PGP SIGNATURE----- --Sig_/s/2HiUiKqwG4NbCMhT04syM--