summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNed Deily <nad@acm.org>2012-03-13 18:18:18 (GMT)
committerNed Deily <nad@acm.org>2012-03-13 18:18:18 (GMT)
commit7ca97d5208e37690f43045d5f89098f42d88fd0f (patch)
treebf20fdbda16ebf7fde987281dff2d1a90e5f6e4c
parent69437da15fb4f626290af0d60bf8d90c5869b828 (diff)
downloadcpython-7ca97d5208e37690f43045d5f89098f42d88fd0f.zip
cpython-7ca97d5208e37690f43045d5f89098f42d88fd0f.tar.gz
cpython-7ca97d5208e37690f43045d5f89098f42d88fd0f.tar.bz2
Issue #14184: Increase the default stack size for secondary threads on
Mac OS X to prevent interpreter crashes when compiled on 10.7.
-rw-r--r--Misc/NEWS3
-rw-r--r--Python/thread_pthread.h20
2 files changed, 15 insertions, 8 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 93b5a74..295a425 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -22,6 +22,9 @@ Core and Builtins
Library
-------
+- Issue #14184: Increase the default stack size for secondary threads on
+ Mac OS X to avoid interpreter crashes when using threads on 10.7.
+
- Issue #10543: Fix unittest test discovery with Jython bytecode files.
- Issue #14252: Fix subprocess.Popen.terminate() to not raise an error under
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index 3efccf6..3cde035 100644
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -19,14 +19,18 @@
#define THREAD_STACK_SIZE 0 /* use default stack size */
#endif
-#if (defined(__APPLE__) || defined(__FreeBSD__)) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
- /* The default stack size for new threads on OSX is small enough that
- * we'll get hard crashes instead of 'maximum recursion depth exceeded'
- * exceptions.
- *
- * The default stack size below is the minimal stack size where a
- * simple recursive function doesn't cause a hard crash.
- */
+/* The default stack size for new threads on OSX and BSD is small enough that
+ * we'll get hard crashes instead of 'maximum recursion depth exceeded'
+ * exceptions.
+ *
+ * The default stack sizes below are the empirically determined minimal stack
+ * sizes where a simple recursive function doesn't cause a hard crash.
+ */
+#if defined(__APPLE__) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
+#undef THREAD_STACK_SIZE
+#define THREAD_STACK_SIZE 0x500000
+#endif
+#if defined(__FreeBSD__) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
#undef THREAD_STACK_SIZE
#define THREAD_STACK_SIZE 0x400000
#endif