From owner-svn-src-head@FreeBSD.ORG Mon Jun 3 14:50:38 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id B31344AF; Mon, 3 Jun 2013 14:50:38 +0000 (UTC) (envelope-from marcel@xcllnt.net) Received: from mail.xcllnt.net (mail.xcllnt.net [70.36.220.4]) by mx1.freebsd.org (Postfix) with ESMTP id 1B26B114B; Mon, 3 Jun 2013 14:50:37 +0000 (UTC) Received: from sladejones-sslvpn-nc.jnpr.net (natint3.juniper.net [66.129.224.36]) (authenticated bits=0) by mail.xcllnt.net (8.14.7/8.14.7) with ESMTP id r53Eoal5028148 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 3 Jun 2013 07:50:36 -0700 (PDT) (envelope-from marcel@xcllnt.net) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.3 \(1503\)) Subject: Re: svn commit: r250991 - in head: contrib/jemalloc/include/jemalloc include lib/libc/stdlib/jemalloc From: Marcel Moolenaar In-Reply-To: <51AC9933.7050201@FreeBSD.org> Date: Mon, 3 Jun 2013 07:50:31 -0700 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201305251859.r4PIxChc053341@svn.freebsd.org> <51AC9933.7050201@FreeBSD.org> To: Dimitry Andric X-Mailer: Apple Mail (2.1503) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Marcel Moolenaar , src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Jun 2013 14:50:38 -0000 On Jun 3, 2013, at 6:25 AM, Dimitry Andric wrote: > On 2013-05-25 20:59, Marcel Moolenaar wrote: >> Author: marcel >> Date: Sat May 25 18:59:11 2013 >> New Revision: 250991 >> URL: http://svnweb.freebsd.org/changeset/base/250991 >>=20 >> Log: >> Make the malloc(3) family of functions weak and make their non-weak >> implementations visible for use by applications. The functions $F = that >> are now weak symbols are: >> allocm, calloc, dallocm, free, malloc, malloc_usable_size, >> nallocm, posix_memalign, rallocm, realloc, sallocm >>=20 >> The non-weak implementations of $F are exported as __$F. >=20 > Hi Marcel, >=20 > This commit seems to lead to various problems in ports, and possibly > other software. For example, with Firefox I now always get a few > messages like: >=20 > firefox in free(): warning: malloc() has never been called >=20 > Another example is the devel/talloc port, which now dies with: It looks like the python build is broken. The net effect is that = _ctypes.so has a strong definition of malloc, free, et al. This is not intentional, but a side-effect of the what seems to be a bug in fficonfig.py.in (see patch below). To elaborate: _ctypes.so incorporates the libffi functionality for what I presume is the basis for Python bindings. libffi includes dlmalloc.c, an open = source allocator. dlmalloc.c is incuded by closures.c and closures.c defines USE_DL_PREFIX. On top of that closures.c makes all allocator functions static. This, by design there's no problem. In short: dlmalloc.c never gets compiler separately/independently. The python build however compiles dlmalloc.c separately/independently. As such, dlmalloc.c now defines and exports malloc et al and it also get linked into _ctypes.so. Once _ctypes.so gets dynamically loaded, things start to break. Unfortunately, this means python needs to be recompiled from ports with the following fix: Index: files/patch-Modules-_ctypes-libffi-fficonfig.py.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- files/patch-Modules-_ctypes-libffi-fficonfig.py.in (revision 0) +++ files/patch-Modules-_ctypes-libffi-fficonfig.py.in (working copy) @@ -0,0 +1,10 @@ +--- Modules/_ctypes/libffi/fficonfig.py.in.orig 2013-06-03 = 07:16:44.000000000 -0700 ++++ Modules/_ctypes/libffi/fficonfig.py.in 2013-06-03 = 07:17:03.000000000 -0700 +@@ -1,7 +1,6 @@ + ffi_sources =3D """ + src/prep_cif.c + src/closures.c +-src/dlmalloc.c + """.split() +=20 + ffi_platforms =3D { This has been tested with python-2.7.5. I can't say anything about other versions. Do people concur that this is the right fix? --=20 Marcel Moolenaar marcel@xcllnt.net