This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] Use __pthread_get_minstack() when setting stack size in__aio_create_helper_thread().
- From: Ryan Arnold <rsa at us dot ibm dot com>
- To: libc-alpha at sources dot redhat dot com
- Date: Thu, 05 Jan 2012 19:20:55 -0600
- Subject: [PATCH] Use __pthread_get_minstack() when setting stack size in__aio_create_helper_thread().
- Reply-to: rsa at us dot ibm dot com
The included patch is an extension to the following patch sets:
commit ee9e064083b7199fd2c680fa1b2dcf49ff52fedd
Author: Ulrich Drepper <drepper@gmail.com>
Date: Thu Dec 22 22:58:17 2011 -0500
Use __pthread_get_minstack in more places
commit 2c1094bd700e63a8d7f547b3f5495bedb55c0a08
Author: Ulrich Drepper <drepper@gmail.com>
Date: Thu Dec 22 22:43:39 2011 -0500
Create internal threads with sufficient stack size
When AIO is used in an application with heavy TLS usage, AIO worker
thread creation fails during pthread_create() due to the TLS
requirements of the application exceeding PTHREAD_STACK_MIN.
Adhemerval is on vacation so I'm submitting the included patch for him.
A similar change to what we propose for
nptl/sysdeps/unix/sysv/linux/aio_misc.h was made to
nptl/sysdeps/pthread/gai_misc.h as part of commit
ee9e064083b7199fd2c680fa1b2dcf49ff52fedd :
/* The helper thread needs only very little resources. */
(void) pthread_attr_setstacksize (&attr,
__pthread_get_minstack (&attr)
+ 4 * PTHREAD_STACK_MIN);
What's the reason that 4 * PTHREAD_STACK_MIN is added to the minstack in
this case?
Ryan S. Arnold
IBM Linux Technology Center
ChangeLog relative to nptl/
2011-12-30 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* sysdeps/unix/sysv/linux/aio_misc.h (__aio_create_helper_thread):
Call pthread_attr_setstacksize() with result of
__pthread_get_minstack() to account for application TLS usage.
diff --git a/nptl/sysdeps/unix/sysv/linux/aio_misc.h b/nptl/sysdeps/unix/sysv/linux/aio_misc.h
index 406d96e..3910b13 100644
--- a/nptl/sysdeps/unix/sysv/linux/aio_misc.h
+++ b/nptl/sysdeps/unix/sysv/linux/aio_misc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2006, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
@@ -47,7 +47,7 @@ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *),
pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
/* The helper thread needs only very little resources. */
- (void) pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN);
+ (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
/* Block all signals in the helper thread. To do this thoroughly we
temporarily have to block all signals here. */