From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 3891A1382C5 for ; Sun, 21 Mar 2021 10:19:50 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 60A6BE087E; Sun, 21 Mar 2021 10:19:49 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 464E4E087E for ; Sun, 21 Mar 2021 10:19:49 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id D2D9733BF36 for ; Sun, 21 Mar 2021 10:19:47 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 216704EE for ; Sun, 21 Mar 2021 10:19:46 +0000 (UTC) From: "Sergei Trofimovich" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sergei Trofimovich" Message-ID: <1616321970.f9f1a8c80671b4b1944226c84a5197183384a2ba.slyfox@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-libs/jemalloc/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-libs/jemalloc/jemalloc-5.2.1-r1.ebuild X-VCS-Directories: dev-libs/jemalloc/ X-VCS-Committer: slyfox X-VCS-Committer-Name: Sergei Trofimovich X-VCS-Revision: f9f1a8c80671b4b1944226c84a5197183384a2ba X-VCS-Branch: master Date: Sun, 21 Mar 2021 10:19:46 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 2870c5f4-1a3d-41e4-9ffd-dad36344732b X-Archives-Hash: 63f4a37d5e699f306fa0854be4907319 commit: f9f1a8c80671b4b1944226c84a5197183384a2ba Author: Sergei Trofimovich gentoo org> AuthorDate: Sun Mar 21 10:19:30 2021 +0000 Commit: Sergei Trofimovich gentoo org> CommitDate: Sun Mar 21 10:19:30 2021 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f9f1a8c8 dev-libs/jemalloc: drop USE=hardened option The only effect of USE=hardened was to pass a --disable-syscall configure option. It's only effect is to use library wrappers to memory allocation instead of direct syscalls to kernel. As jemalloc overrides a bunch of library memory allocation library calls itself this introduces extra chances to interact badly with other tool that override library calls. In #617518 sandbox became incompatible with jemalloc users and produced deadlocks. Example from ruby[jemalloc]: malloc_init() [called by jemalloc] -> open("/proc/sys/vm/overcommit_memory") -> [sandbox takes over] open_DEFAULT() -> [sandbox initializes] -> init_env_entries () -> _xmalloc() -> sb_mmap() [ try hard not to use olerloaded mmap() ] -> get_dlsym("mmap") -> calloc() [ sandbox loses control, overridden by jemalloc ] -> malloc_init() [ recursion, gets locked in attempt to lock again locked malloc_init mutex ] There should be no reason to use --disable-syscall on linux. And especially not under generic (and enabled by default on hardened profiles) USE=hardened. The change drops --disable-syscall passing (and USE=hardened) completely. Users still can do it via EXTRA_ECONF= but there should be no need for that. Upstream ./configure should do the right thing. Reported-by: Maciej Piechotka Closes: https://bugs.gentoo.org/617518 Package-Manager: Portage-3.0.17, Repoman-3.0.2 Signed-off-by: Sergei Trofimovich gentoo.org> dev-libs/jemalloc/jemalloc-5.2.1-r1.ebuild | 50 ++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/dev-libs/jemalloc/jemalloc-5.2.1-r1.ebuild b/dev-libs/jemalloc/jemalloc-5.2.1-r1.ebuild new file mode 100644 index 00000000000..e66e9eae517 --- /dev/null +++ b/dev-libs/jemalloc/jemalloc-5.2.1-r1.ebuild @@ -0,0 +1,50 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +inherit autotools toolchain-funcs multilib-minimal + +DESCRIPTION="Jemalloc is a general-purpose scalable concurrent allocator" +HOMEPAGE="http://jemalloc.net/ https://github.com/jemalloc/jemalloc" +SRC_URI="https://github.com/jemalloc/jemalloc/releases/download/${PV}/${P}.tar.bz2" + +LICENSE="BSD" +SLOT="0/2" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" +IUSE="debug lazy-lock prof static-libs stats xmalloc" +HTML_DOCS=( doc/jemalloc.html ) +PATCHES=( "${FILESDIR}/${PN}-5.2.0-gentoo-fixups.patch" ) + +MULTILIB_WRAPPED_HEADERS=( /usr/include/jemalloc/jemalloc.h ) + +src_prepare() { + default + eautoreconf +} + +multilib_src_configure() { + ECONF_SOURCE="${S}" \ + econf \ + $(use_enable debug) \ + $(use_enable lazy-lock) \ + $(use_enable prof) \ + $(use_enable stats) \ + $(use_enable xmalloc) +} + +multilib_src_install() { + # Copy man file which the Makefile looks for + cp "${S}/doc/jemalloc.3" "${BUILD_DIR}/doc" || die + emake DESTDIR="${D}" install +} + +multilib_src_install_all() { + if [[ ${CHOST} == *-darwin* ]] ; then + # fixup install_name, #437362 + install_name_tool \ + -id "${EPREFIX}"/usr/$(get_libdir)/libjemalloc.2.dylib \ + "${ED}"/usr/$(get_libdir)/libjemalloc.2.dylib || die + fi + use static-libs || find "${ED}" -name '*.a' -delete +}