From owner-freebsd-threads@FreeBSD.ORG Fri Nov 27 21:53:07 2009 Return-Path: Delivered-To: threads@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1144E106568D for ; Fri, 27 Nov 2009 21:53:07 +0000 (UTC) (envelope-from marcus@FreeBSD.org) Received: from creme-brulee.marcuscom.com (marcuscom-pt.tunnel.tserv1.fmt.ipv6.he.net [IPv6:2001:470:1f00:ffff::1279]) by mx1.freebsd.org (Postfix) with ESMTP id CA54B8FC14 for ; Fri, 27 Nov 2009 21:53:06 +0000 (UTC) Received: from [IPv6:2001:470:1f00:2464::4] (shumai.marcuscom.com [IPv6:2001:470:1f00:2464::4]) by creme-brulee.marcuscom.com (8.14.3/8.14.3) with ESMTP id nARLtHsR071866; Fri, 27 Nov 2009 16:55:17 -0500 (EST) (envelope-from marcus@FreeBSD.org) From: Joe Marcus Clarke To: Kostik Belousov In-Reply-To: <20091127213046.GI2368@deviant.kiev.zoral.com.ua> References: <1259298918.1608.19.camel@shumai.marcuscom.com> <20091127131242.GA2368@deviant.kiev.zoral.com.ua> <1259349248.1608.36.camel@shumai.marcuscom.com> <4AF1E295-0524-4C39-94CD-9A12D574C64D@vigrid.com> <20091127213046.GI2368@deviant.kiev.zoral.com.ua> Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-GNNT8vyxA5rxIl6Ih1Mv" Organization: FreeBSD, Inc. Date: Fri, 27 Nov 2009 16:53:20 -0500 Message-Id: <1259358800.1608.46.camel@shumai.marcuscom.com> Mime-Version: 1.0 X-Mailer: Evolution 2.26.3 FreeBSD GNOME Team Port X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00,MIME_QP_LONG_LINE, NO_RELAYS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on creme-brulee.marcuscom.com Cc: "threads@freebsd.org" Subject: Re: [PATCH] Add missing pthread_condattr_{init,destroy} stubs to libc X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Nov 2009 21:53:07 -0000 --=-GNNT8vyxA5rxIl6Ih1Mv Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Fri, 2009-11-27 at 23:30 +0200, Kostik Belousov wrote: > On Fri, Nov 27, 2009 at 04:19:38PM -0500, Daniel Eischen wrote: > >=20 > > On Nov 27, 2009, at 2:14 PM, Joe Marcus Clarke =20 > > wrote: > >=20 > > >On Fri, 2009-11-27 at 15:12 +0200, Kostik Belousov wrote: > > >>On Fri, Nov 27, 2009 at 12:15:18AM -0500, Joe Marcus Clarke wrote: > > >>>I would like permission to commit this patch which adds missing > > >>>pthread_condattr_{init,destroy} symbols to libc. I think I did the > > >>>symbol addition correctly (and it seems to work). Without this, the > > >>>weak symbols added in the libpthread-stubs port conflict with =20 > > >>>those in > > >>>libthr, and applications with use these symbols can crash. > > >>> > > >>>I have temporarily hacked libpthread-stubs to fix this, but I really > > >>>feel these stubs should be added to libc. I've also copied kib as =20 > > >>>he > > >>>has been kind enough to review my work in the past. Thanks. > > >>> > > >>>http://www.marcuscom.com/downloads/stubs.diff > > >> > > >>It is FBSD_1.2 version that we use for symbols added after HEAD =20 > > >>become > > >>CURRENT-9. > > > > > >Done. > >=20 > > I don't think the symbols belong in FBSD_1.2. They already exist in =20 > > libthr in a previous namespace. If you use FBSD_1.2, then you =20 > > probably need to bump them in libthr and libc_r, and add compatible =20 > > symbols (no problem there since there are no differences) for the =20 > > previous versions. > Oh, yes. >=20 > >=20 > > Still not sure why libc needs all libpthread stubs. Shouldn't be =20 > > necessary. >=20 > The privately discussed plan for 9.0 is to have libthr merged into > libc, and have libpthread and libthr as only filter object against libc > providing pthread_* and related symbols. >=20 > This would eliminate the need for pthread stubs and solve the issues > with (wrongly built) binaries that do not link to libthr but dlopen() > libraries that are linked with it. Yeah, I think that would be a great overall solution. However, in this case, the binaries in question ARE linked with -pthread. The problem can be easily seen by taking this C program: #include #include #include int main(void) { pthread_condattr_t attr; pthread_condattr_init (&attr); pthread_condattr_setclock (&attr, CLOCK_MONOTONIC); pthread_condattr_destroy (&attr); return 0; } And compiling it as: cc -o xxx -L/usr/local/lib -lpthread-stubs -pthread xxx.c You will need devel/libpthread-stubs (version 0.3) installed. When you run it, it will segfault. If you then rebuild libc and libthr with my stubs.diff patch, then rebuild libpthread-stubs, the problem will go away. Joe --=20 Joe Marcus Clarke FreeBSD GNOME Team :: gnome@FreeBSD.org FreeNode / #freebsd-gnome http://www.FreeBSD.org/gnome --=-GNNT8vyxA5rxIl6Ih1Mv Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEABECAAYFAksQSk8ACgkQb2iPiv4Uz4fdQQCdEg6T2KI+yI/g0nkDFal1hwU0 KlsAoJwBt9lDyfGAJhNn8E26lsYEt5D+ =GkuU -----END PGP SIGNATURE----- --=-GNNT8vyxA5rxIl6Ih1Mv--