From owner-freebsd-ports@FreeBSD.ORG Sun Oct 7 22:10:27 2012 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 001AA1065672; Sun, 7 Oct 2012 22:10:26 +0000 (UTC) (envelope-from tijl@coosemans.org) Received: from mailrelay005.isp.belgacom.be (mailrelay005.isp.belgacom.be [195.238.6.171]) by mx1.freebsd.org (Postfix) with ESMTP id 4D7DE8FC14; Sun, 7 Oct 2012 22:10:25 +0000 (UTC) X-Belgacom-Dynamic: yes X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av8EAP/8cVBbsUk6/2dsb2JhbABFu2CDQYEJgiABAQQBJy8iAQULCw4KCRYPCQMCAQIBJx4GDQEHAQGHewq4BItPhhADjm6BIJYLgm8 Received: from 58.73-177-91.adsl-dyn.isp.belgacom.be (HELO kalimero.tijl.coosemans.org) ([91.177.73.58]) by relay.skynet.be with ESMTP; 08 Oct 2012 00:10:18 +0200 Received: from kalimero.tijl.coosemans.org (kalimero.tijl.coosemans.org [127.0.0.1]) by kalimero.tijl.coosemans.org (8.14.5/8.14.5) with ESMTP id q97MAHJm050827; Mon, 8 Oct 2012 00:10:18 +0200 (CEST) (envelope-from tijl@coosemans.org) Message-ID: <5071FDC4.4060603@coosemans.org> Date: Mon, 08 Oct 2012 00:10:12 +0200 From: Tijl Coosemans User-Agent: Mozilla/5.0 (X11; FreeBSD i386; rv:15.0) Gecko/20120920 Thunderbird/15.0.1 MIME-Version: 1.0 To: Shane Ambler References: <506B3E9A.1000905@ShaneWare.Biz> In-Reply-To: <506B3E9A.1000905@ShaneWare.Biz> X-Enigmail-Version: 1.4.3 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------enig039F7288FF3236BBE4723773" Cc: gerald@freebsd.org, FreeBSD-ports Subject: Re: Possible regression in i386 build with gcc 4.6 X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Oct 2012 22:10:27 -0000 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig039F7288FF3236BBE4723773 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 02-10-2012 21:20, Shane Ambler wrote: > I found a situation where gcc v4.2 compiles a i386 working binary and > v4.6 doesn't. (Currently 4.7 and 4.8 fail to build this code) I have > verified that this happens with 8.2/8.3/9.0 i386 systems. x86_64 > versions build without issue as does clang i386/x86_64. >=20 > It appears that the x86_64 target of gcc offers gcc atomics while the > i386 target doesn't - and this appears to be a freebsd specific setup, > the i386 targets then fall back to using tbb atomics. >=20 > Is this some subtle bug I'm missing? can it be alleviated with compiler= > flags/more universal code? >=20 > I have tried to cut this down to just the call that triggers a > segmentation fault but the one call itself isn't enough. >=20 > The issue can be found in graphics/openimageio. The easiest way I know > to cause the segmentation fault is with the image viewer that is part o= f > the port (it is a Qt app) it seg faults during startup. There is no nee= d > to open any images just starting iv with an empty window is fine. >=20 > The makefile is setup to USE_GCC=3D4.6+ for i386/8.2 - this is a leftov= er > from earlier versions that will be removed next update. >=20 > cd /usr/ports/graphics/openimageio > make > ./work/.build/iv/iv >=20 > The error appears to stem from line 193 of src/libutil/ustring.cpp >=20 > atomic_exchange_and_add (&ustring_stats_constructed, 1); >=20 > Commenting this line prevents the crash but isn't a valid fix. > the relevant function it calls is -- src/include/thread.h:283 > which uses the atomic class template from tbb for the i386 build. >=20 > inline long long > atomic_exchange_and_add (volatile long long *at, long long x) > { > #ifdef USE_GCC_ATOMICS > return __sync_fetch_and_add (at, x); > #elif USE_TBB > atomic *a =3D (atomic *)at; This cast is dangerous. It looks like atomic has 8 byte alignment, but long long on i386 only has 4 byte alignment. > return a->fetch_and_add (x); > #elif defined(__APPLE__) > > #endif > } --------------enig039F7288FF3236BBE4723773 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (FreeBSD) iF4EAREIAAYFAlBx/ckACgkQfoCS2CCgtitj2gD7BZW/3eQarzMz4/Orxt8IeWfA 6gMOFhx6v9DYEse9bYUA/3mjWmGL8XPES4GqCxCD05Q+0R7mxnqml7ZtXOfBDkxo =gLn7 -----END PGP SIGNATURE----- --------------enig039F7288FF3236BBE4723773--