comparison Python/thread_pthread.h @ 70448:0cded2f2cea3 3.1

Issue #9670: Increase the default stack size for secondary threads on Mac OS X and FreeBSD to reduce the chances of a crash instead of a "maximum recursion depth" RuntimeError exception. (patch by Ronald Oussoren)
author Ned Deily <nad@acm.org>
date Sat, 28 May 2011 00:19:56 -0700
parents 42d5001e5845
children 8a484090da7e
comparison
equal deleted inserted replaced
70443:95117a2da450 70448:0cded2f2cea3
15 /* The POSIX spec requires that use of pthread_attr_setstacksize 15 /* The POSIX spec requires that use of pthread_attr_setstacksize
16 be conditional on _POSIX_THREAD_ATTR_STACKSIZE being defined. */ 16 be conditional on _POSIX_THREAD_ATTR_STACKSIZE being defined. */
17 #ifdef _POSIX_THREAD_ATTR_STACKSIZE 17 #ifdef _POSIX_THREAD_ATTR_STACKSIZE
18 #ifndef THREAD_STACK_SIZE 18 #ifndef THREAD_STACK_SIZE
19 #define THREAD_STACK_SIZE 0 /* use default stack size */ 19 #define THREAD_STACK_SIZE 0 /* use default stack size */
20 #endif
21
22 #if (defined(__APPLE__) || defined(__FreeBSD__)) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
23 /* The default stack size for new threads on OSX is small enough that
24 * we'll get hard crashes instead of 'maximum recursion depth exceeded'
25 * exceptions.
26 *
27 * The default stack size below is the minimal stack size where a
28 * simple recursive function doesn't cause a hard crash.
29 */
30 #undef THREAD_STACK_SIZE
31 #define THREAD_STACK_SIZE 0x400000
20 #endif 32 #endif
21 /* for safety, ensure a viable minimum stacksize */ 33 /* for safety, ensure a viable minimum stacksize */
22 #define THREAD_STACK_MIN 0x8000 /* 32kB */ 34 #define THREAD_STACK_MIN 0x8000 /* 32kB */
23 #else /* !_POSIX_THREAD_ATTR_STACKSIZE */ 35 #else /* !_POSIX_THREAD_ATTR_STACKSIZE */
24 #ifdef THREAD_STACK_SIZE 36 #ifdef THREAD_STACK_SIZE