]> granicus.if.org Git - python/commitdiff
bpo-18049: Sync thread stack size to main thread size on macOS (GH-14748)
authorRonald Oussoren <ronaldoussoren@mac.com>
Thu, 1 Aug 2019 05:43:07 +0000 (07:43 +0200)
committerGitHub <noreply@github.com>
Thu, 1 Aug 2019 05:43:07 +0000 (07:43 +0200)
This changeset increases the default size of the stack
for threads on macOS to the size of the stack
of the main thread and reenables the relevant
recursion test.

Lib/test/test_threading.py
Misc/NEWS.d/next/macOS/2019-07-13-15-58-18.bpo-18049.MklhQQ.rst [new file with mode: 0644]
Python/thread_pthread.h
configure
configure.ac

index a99b8eca2be785eb8ebd172bd52190a9739e2ce2..1466d25e948283d4a257595008126cfd736147cc 100644 (file)
@@ -1057,8 +1057,6 @@ class ThreadingExceptionTests(BaseTestCase):
         lock = threading.Lock()
         self.assertRaises(RuntimeError, lock.release)
 
-    @unittest.skipUnless(sys.platform == 'darwin' and test.support.python_is_optimized(),
-                         'test macosx problem')
     def test_recursion_limit(self):
         # Issue 9670
         # test that excessive recursion within a non-main thread causes
diff --git a/Misc/NEWS.d/next/macOS/2019-07-13-15-58-18.bpo-18049.MklhQQ.rst b/Misc/NEWS.d/next/macOS/2019-07-13-15-58-18.bpo-18049.MklhQQ.rst
new file mode 100644 (file)
index 0000000..5af07cd
--- /dev/null
@@ -0,0 +1,3 @@
+Increase the default stack size of threads from 5MB to 16MB on macOS, to
+match the stack size of the main thread. This avoids crashes on deep recursion
+in threads.
index a36d16c19eade5e07d2678077bfdb914905e0809..994e35b2cc0803cc0c02bd3b42ff686a873802c9 100644 (file)
@@ -40,7 +40,8 @@
  */
 #if defined(__APPLE__) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
 #undef  THREAD_STACK_SIZE
-#define THREAD_STACK_SIZE       0x500000
+/* Note: This matches the value of -Wl,-stack_size in configure.ac */
+#define THREAD_STACK_SIZE       0x1000000
 #endif
 #if defined(__FreeBSD__) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
 #undef  THREAD_STACK_SIZE
index 4cea98e3652896dc0cc6dc56676ef8dc2578b689..bffb849b797b47ca36a4912855df347f54da8c5a 100755 (executable)
--- a/configure
+++ b/configure
@@ -9542,6 +9542,8 @@ then
                # Issue #18075: the default maximum stack size (8MBytes) is too
                # small for the default recursion limit. Increase the stack size
                # to ensure that tests don't crash
+               # Note: This matches the value of THREAD_STACK_SIZE in
+               # thread_pthread.h
                LINKFORSHARED="-Wl,-stack_size,1000000 $LINKFORSHARED"
 
                if test "$enable_framework"
index b9759e12f89f746105611e1b8fb7659812dd3a71..8566d4338469d7f98dbb0b65ebe0152b5de6b5a0 100644 (file)
@@ -2694,6 +2694,8 @@ then
                # Issue #18075: the default maximum stack size (8MBytes) is too
                # small for the default recursion limit. Increase the stack size
                # to ensure that tests don't crash
+               # Note: This matches the value of THREAD_STACK_SIZE in
+               # thread_pthread.h
                LINKFORSHARED="-Wl,-stack_size,1000000 $LINKFORSHARED"
 
                if test "$enable_framework"