--- gwlib/gwthread-pthread.c.orig Wed Sep 4 18:11:06 2002 +++ gwlib/gwthread-pthread.c Sun Jan 19 03:05:30 2003 @@ -68,6 +68,11 @@ pthread_key_t tsd_key; pthread_mutex_t threadtable_lock; +/* + * Thread creation parameters. + */ +static pthread_attr_t thread_attr; +#define MIN_THREAD_STACK_SIZE (256 * 1024) static void lock(void) { @@ -205,6 +210,7 @@ { int ret; int i; + int stack_size; pthread_mutex_init(&threadtable_lock, NULL); @@ -217,6 +223,13 @@ threadtable[i] = NULL; } active_threads = 0; +/* + * Make sure that thread stack is large enough. + */ + pthread_attr_init(&thread_attr); + pthread_attr_getstacksize(&thread_attr, &stack_size); + if (stack_size < MIN_THREAD_STACK_SIZE) + pthread_attr_setstacksize(&thread_attr, MIN_THREAD_STACK_SIZE); create_threadinfo_main(); } @@ -380,7 +393,7 @@ return -1; } - ret = pthread_create(&id, NULL, &new_thread, p); + ret = pthread_create(&id, &thread_attr, &new_thread, p); if (ret != 0) { unlock(); error(ret, "Could not create new thread.");