commit: 7565f43fc1c544625d153f510b950f9f9bf6e848 Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org> AuthorDate: Tue Nov 1 15:22:38 2016 +0000 Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org> CommitDate: Tue Nov 1 15:23:11 2016 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7565f43f
dev-libs/jemalloc: Patch added to fix an issue with sys-apps/sandbox Cherry picked commit c443b67561 [Link 1] which fixes an issue which prevented any jemalloc-enabled application from running through sys-apps/sandbox (typical use case is emerge with FEATURES=sandbox and FEATURES=test). Cherry picked commit 3c8c3e9e9b [Link 2] which fixes a leaked file descriptor. Link 1: https://github.com/jemalloc/jemalloc/commit/c443b67561891ae68d688daf5f8ce37820cdba2b Link 2: https://github.com/jemalloc/jemalloc/commit/3c8c3e9e9b59b6e34a222816a05f0a01a68919b3 Gentoo-Bug: https://bugs.gentoo.org/592420 Package-Manager: portage-2.3.2 .../jemalloc/files/jemalloc-4.2-issue_399.patch | 26 ++++++++++ .../jemalloc/files/jemalloc-4.2-issue_443.patch | 58 ++++++++++++++++++++++ ...alloc-4.2.1.ebuild => jemalloc-4.2.1-r1.ebuild} | 2 + 3 files changed, 86 insertions(+) diff --git a/dev-libs/jemalloc/files/jemalloc-4.2-issue_399.patch b/dev-libs/jemalloc/files/jemalloc-4.2-issue_399.patch new file mode 100644 index 00000000..da9f2d8 --- /dev/null +++ b/dev-libs/jemalloc/files/jemalloc-4.2-issue_399.patch @@ -0,0 +1,26 @@ +From 3c8c3e9e9b59b6e34a222816a05f0a01a68919b3 Mon Sep 17 00:00:00 2001 +From: Jason Evans <[email protected]> +Date: Mon, 26 Sep 2016 15:55:40 -0700 +Subject: [PATCH] Close file descriptor after reading + "/proc/sys/vm/overcommit_memory". + +This bug was introduced by c2f970c32b527660a33fa513a76d913c812dcf7c +(Modify pages_map() to support mapping uncommitted virtual memory.). + +This resolves #399. +--- + src/pages.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/pages.c b/src/pages.c +index 2a9b7e3..05b0d69 100644 +--- a/src/pages.c ++++ b/src/pages.c +@@ -219,6 +219,7 @@ os_overcommits_proc(void) + return (false); /* Error. */ + + nread = read(fd, &buf, sizeof(buf)); ++ close(fd); + if (nread < 1) + return (false); /* Error. */ + /* diff --git a/dev-libs/jemalloc/files/jemalloc-4.2-issue_443.patch b/dev-libs/jemalloc/files/jemalloc-4.2-issue_443.patch new file mode 100644 index 00000000..d2b065a --- /dev/null +++ b/dev-libs/jemalloc/files/jemalloc-4.2-issue_443.patch @@ -0,0 +1,58 @@ +From c443b67561891ae68d688daf5f8ce37820cdba2b Mon Sep 17 00:00:00 2001 +From: Jason Evans <[email protected]> +Date: Sat, 29 Oct 2016 22:41:04 -0700 +Subject: [PATCH] Use syscall(2) rather than {open,read,close}(2) during boot. + +Some applications wrap various system calls, and if they call the +allocator in their wrappers, unexpected reentry can result. This is not +a general solution (many other syscalls are spread throughout the code), +but this resolves a bootstrapping issue that is apparently common. + +This resolves #443. +--- + src/pages.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/src/pages.c b/src/pages.c +index 05b0d69..84e2216 100644 +--- a/src/pages.c ++++ b/src/pages.c +@@ -207,6 +207,11 @@ os_overcommits_sysctl(void) + #endif + + #ifdef JEMALLOC_PROC_SYS_VM_OVERCOMMIT_MEMORY ++/* ++ * Use syscall(2) rather than {open,read,close}(2) when possible to avoid ++ * reentry during bootstrapping if another library has interposed system call ++ * wrappers. ++ */ + static bool + os_overcommits_proc(void) + { +@@ -214,12 +219,26 @@ os_overcommits_proc(void) + char buf[1]; + ssize_t nread; + ++#ifdef SYS_open ++ fd = (int)syscall(SYS_open, "/proc/sys/vm/overcommit_memory", O_RDONLY); ++#else + fd = open("/proc/sys/vm/overcommit_memory", O_RDONLY); ++#endif + if (fd == -1) + return (false); /* Error. */ + ++#ifdef SYS_read ++ nread = (ssize_t)syscall(SYS_read, fd, &buf, sizeof(buf)); ++#else + nread = read(fd, &buf, sizeof(buf)); ++#endif ++ ++#ifdef SYS_close ++ syscall(SYS_close, fd); ++#else + close(fd); ++#endif ++ + if (nread < 1) + return (false); /* Error. */ + /* diff --git a/dev-libs/jemalloc/jemalloc-4.2.1.ebuild b/dev-libs/jemalloc/jemalloc-4.2.1-r1.ebuild similarity index 95% rename from dev-libs/jemalloc/jemalloc-4.2.1.ebuild rename to dev-libs/jemalloc/jemalloc-4.2.1-r1.ebuild index 8c320ea..c7f3d8a 100644 --- a/dev-libs/jemalloc/jemalloc-4.2.1.ebuild +++ b/dev-libs/jemalloc/jemalloc-4.2.1-r1.ebuild @@ -17,6 +17,8 @@ IUSE="debug static-libs stats" HTML_DOCS=( doc/jemalloc.html ) PATCHES=( "${FILESDIR}/${PN}-3.5.1-strip-optimization.patch" "${FILESDIR}/${PN}-3.5.1_fix_html_install.patch" + "${FILESDIR}/${PN}-4.2-issue_399.patch" + "${FILESDIR}/${PN}-4.2-issue_443.patch" ) MULTILIB_WRAPPED_HEADERS=( /usr/include/jemalloc/jemalloc.h ) # autotools-utils.eclass auto-adds configure options when static-libs is in IUSE
