summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2021-12-01 14:58:40 +0000
committerSam James <sam@gentoo.org>2021-12-01 15:08:55 +0000
commit1f714c474eb248b3fa2c84f3b0f22cc509c0e6c9 (patch)
tree5aff10ffdccf23974e4dbfd00aa494112783d1a2
parentlinux: Use /proc/stat fallback for __get_nprocs_conf (BZ #28624) (diff)
downloadglibc-1f714c474eb248b3fa2c84f3b0f22cc509c0e6c9.tar.gz
glibc-1f714c474eb248b3fa2c84f3b0f22cc509c0e6c9.tar.bz2
glibc-1f714c474eb248b3fa2c84f3b0f22cc509c0e6c9.zip
clone-internal.c: make clone3 syscall optionalgentoo/glibc-2.34-7
We're disabling clone3 for now _CONDITIONALLY_ (not by default) to allow compatibility with applications using older Electron. Use -DGENTOO_USE_CLONE3 to enable clone3 for now. In future, we will revert back to always using clone3. This was impacting e.g. Discord and Skype. This patch stops glibc from using clone3 internally (which is the only real use of it) and falls back to the old behaviour. Specifically, we want https://github.com/electron/electron/pull/31091 to work its way downstream to various Electron applications. https://bugs.gentoo.org/819045 https://bugs.gentoo.org/827386 https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/glibc/plain/debian/patches/ubuntu/disable-clone3.patch This is the same as the patch that was considered but ultimately rejected for 2.34 because Docker got sorted out in time: https://patchwork.ozlabs.org/project/glibc/patch/87eebkf8ph.fsf@oldenburg.str.redhat.com/. Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r--sysdeps/unix/sysv/linux/clone-internal.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/clone-internal.c b/sysdeps/unix/sysv/linux/clone-internal.c
index 979f7880be..c5566daf73 100644
--- a/sysdeps/unix/sysv/linux/clone-internal.c
+++ b/sysdeps/unix/sysv/linux/clone-internal.c
@@ -48,7 +48,7 @@ __clone_internal (struct clone_args *cl_args,
int (*func) (void *arg), void *arg)
{
int ret;
-#ifdef HAVE_CLONE3_WRAPPER
+#if defined(HAVE_CLONE3_WRAPPER) && defined(GENTOO_USE_CLONE3)
/* Try clone3 first. */
int saved_errno = errno;
ret = __clone3 (cl_args, sizeof (*cl_args), func, arg);