mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-23 16:49:10 -07:00
net-fs/autofs: add glibc-2.34 patch
Closes: https://bugs.gentoo.org/803938 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
@@ -43,6 +43,7 @@ PATCHES=(
|
||||
"${FILESDIR}/${P}-glibc.patch"
|
||||
"${FILESDIR}/${PN}-5.1.6-musl.patch"
|
||||
"${FILESDIR}/${PN}-5.1.6-pid.patch"
|
||||
"${FILESDIR}/${PN}-5.1.7-glibc-2.34.patch"
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
@@ -90,7 +91,8 @@ src_configure() {
|
||||
--enable-ignore-busy
|
||||
RANLIB="$(type -P $(tc-getRANLIB))" # bug #483716
|
||||
)
|
||||
econf "${myeconfargs[@]}"
|
||||
|
||||
CONFIG_SHELL="${BROOT}/bin/bash" econf "${myeconfargs[@]}"
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
|
||||
107
net-fs/autofs/files/autofs-5.1.7-glibc-2.34.patch
Normal file
107
net-fs/autofs/files/autofs-5.1.7-glibc-2.34.patch
Normal file
@@ -0,0 +1,107 @@
|
||||
https://src.fedoraproject.org/rpms/autofs/raw/rawhide/f/autofs-5.1.7-use-default-stack-size-for-threads.patch
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1984813
|
||||
https://bugs.gentoo.org/803938
|
||||
|
||||
autofs-5.1.7 - use default stack size for threads
|
||||
|
||||
From: Ian Kent <raven@themaw.net>
|
||||
|
||||
autofs uses PTHREAD_STACK_MIN to set the stack size for threads it
|
||||
creates.
|
||||
|
||||
In two cases it is used to reduce the stack size for long running
|
||||
service threads while it's used to allocate a larger stack for worker
|
||||
threads that can have larger memory requirements.
|
||||
|
||||
In recent glibc releases PTHREAD_STACK_MIN is no longer a constant
|
||||
which can lead to unexpectedly different stack sizes on different
|
||||
architectures and the autofs assumption it's a constant causes a
|
||||
compile failure.
|
||||
|
||||
The need to alter the stack size was due to observed stack overflow
|
||||
which was thought to be due the thread stack being too small for autofs
|
||||
and glibc alloca(3) usage.
|
||||
|
||||
Quite a bit of that alloca(3) usage has been eliminated from autofs now,
|
||||
particularly those that might be allocating largish amounts of storage,
|
||||
and there has been a lot of change in glibc too so using the thread
|
||||
default stack should be ok.
|
||||
|
||||
Signed-off-by: Ian Kent <raven@themaw.net>
|
||||
--- a/daemon/automount.c
|
||||
+++ b/daemon/automount.c
|
||||
@@ -84,7 +84,6 @@ static size_t kpkt_len;
|
||||
/* Attributes for creating detached and joinable threads */
|
||||
pthread_attr_t th_attr;
|
||||
pthread_attr_t th_attr_detached;
|
||||
-size_t detached_thread_stack_size = PTHREAD_STACK_MIN * 144;
|
||||
|
||||
struct master_readmap_cond mrc = {
|
||||
PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, NULL, 0, 0, 0, 0};
|
||||
@@ -2620,34 +2619,6 @@ int main(int argc, char *argv[])
|
||||
exit(1);
|
||||
}
|
||||
|
||||
-#ifdef _POSIX_THREAD_ATTR_STACKSIZE
|
||||
- if (pthread_attr_setstacksize(
|
||||
- &th_attr_detached, detached_thread_stack_size)) {
|
||||
- logerr("%s: failed to set stack size thread attribute!",
|
||||
- program);
|
||||
- if (start_pipefd[1] != -1) {
|
||||
- res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat));
|
||||
- close(start_pipefd[1]);
|
||||
- }
|
||||
- release_flag_file();
|
||||
- macro_free_global_table();
|
||||
- exit(1);
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
- if (pthread_attr_getstacksize(
|
||||
- &th_attr_detached, &detached_thread_stack_size)) {
|
||||
- logerr("%s: failed to get detached thread stack size!",
|
||||
- program);
|
||||
- if (start_pipefd[1] != -1) {
|
||||
- res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat));
|
||||
- close(start_pipefd[1]);
|
||||
- }
|
||||
- release_flag_file();
|
||||
- macro_free_global_table();
|
||||
- exit(1);
|
||||
- }
|
||||
-
|
||||
info(logging, "Starting automounter version %s, master map %s",
|
||||
version, master_list->name);
|
||||
info(logging, "using kernel protocol version %d.%02d",
|
||||
--- a/daemon/state.c
|
||||
+++ b/daemon/state.c
|
||||
@@ -1177,12 +1177,8 @@ int st_start_handler(void)
|
||||
status = pthread_attr_init(pattrs);
|
||||
if (status)
|
||||
pattrs = NULL;
|
||||
- else {
|
||||
+ else
|
||||
pthread_attr_setdetachstate(pattrs, PTHREAD_CREATE_DETACHED);
|
||||
-#ifdef _POSIX_THREAD_ATTR_STACKSIZE
|
||||
- pthread_attr_setstacksize(pattrs, PTHREAD_STACK_MIN*4);
|
||||
-#endif
|
||||
- }
|
||||
|
||||
status = pthread_create(&thid, pattrs, st_queue_handler, NULL);
|
||||
|
||||
--- a/lib/alarm.c
|
||||
+++ b/lib/alarm.c
|
||||
@@ -270,12 +270,8 @@ int alarm_start_handler(void)
|
||||
status = pthread_attr_init(pattrs);
|
||||
if (status)
|
||||
pattrs = NULL;
|
||||
- else {
|
||||
+ else
|
||||
pthread_attr_setdetachstate(pattrs, PTHREAD_CREATE_DETACHED);
|
||||
-#ifdef _POSIX_THREAD_ATTR_STACKSIZE
|
||||
- pthread_attr_setstacksize(pattrs, PTHREAD_STACK_MIN*4);
|
||||
-#endif
|
||||
- }
|
||||
|
||||
status = pthread_condattr_init(&condattrs);
|
||||
if (status)
|
||||
Reference in New Issue
Block a user