GUSI on the Mac creates threads with a default stack size of 20KB, which is
authorJack Jansen <jack.jansen@cwi.nl>
Wed, 29 Aug 2001 15:24:53 +0000 (15:24 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Wed, 29 Aug 2001 15:24:53 +0000 (15:24 +0000)
not enough for Python. Increased the stacksize to a (somewhat arbitrary)
64KB.

Python/thread_pthread.h

index db3115ad2eca0fb243bc1db3671f3b2531bc2024..6910ccba1eb2692e2c28700612e6934b5bad35d5 100644 (file)
 
 #endif
 
+#ifdef USE_GUSI
+/* The Macintosh GUSI I/O library sets the stackspace to
+** 20KB, much too low. We up it to 64K.
+*/
+#define THREAD_STACK_SIZE 0x10000
+#endif
+
 
 /* set default attribute object for different versions */
 
@@ -128,10 +135,17 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
 {
        pthread_t th;
        int success;
+#ifdef THREAD_STACK_SIZE
+       pthread_attr_t attrs;
+#endif
        dprintf(("PyThread_start_new_thread called\n"));
        if (!initialized)
                PyThread_init_thread();
 
+#ifdef THREAD_STACK_SIZE
+       pthread_attr_init(&attrs);
+       pthread_attr_setstacksize(&attrs, THREAD_STACK_SIZE);
+#endif
        success = pthread_create(&th, 
 #if defined(PY_PTHREAD_D4)
                                 pthread_attr_default,
@@ -146,12 +160,18 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
                                 func,
                                 arg
 #elif defined(PY_PTHREAD_STD)
+#ifdef THREAD_STACK_SIZE
+                                &attrs,
+#else
                                 (pthread_attr_t*)NULL,
+#endif
                                 (void* (*)(void *))func,
                                 (void *)arg
 #endif
                                 );
-
+#ifdef THREAD_STACK_SIZE
+       pthread_attr_destroy(&attrs);
+#endif
        if (success == 0) {
 #if defined(PY_PTHREAD_D4) || defined(PY_PTHREAD_D6) || defined(PY_PTHREAD_D7)
                pthread_detach(&th);