From 00ada2c1d57c5b8b468bad32ff24fa14113ae5c7 Mon Sep 17 00:00:00 2001 From: xdegaye Date: Sun, 8 Dec 2019 08:40:14 +0100 Subject: bpo-38852: Set thread stack size to 8 Mb for debug builds on android platforms (GH-17337) --- .../Core and Builtins/2019-11-22-09-55-21.bpo-38852.y7oPEa.rst | 1 + Python/thread_pthread.h | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2019-11-22-09-55-21.bpo-38852.y7oPEa.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-11-22-09-55-21.bpo-38852.y7oPEa.rst b/Misc/NEWS.d/next/Core and Builtins/2019-11-22-09-55-21.bpo-38852.y7oPEa.rst new file mode 100644 index 0000000..915a936 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2019-11-22-09-55-21.bpo-38852.y7oPEa.rst @@ -0,0 +1 @@ +Set the thread stack size to 8 Mb for debug builds on android platforms. diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h index b9a3405..ff4266c 100644 --- a/Python/thread_pthread.h +++ b/Python/thread_pthread.h @@ -51,6 +51,16 @@ #undef THREAD_STACK_SIZE #define THREAD_STACK_SIZE 0x200000 #endif +/* bpo-38852: test_threading.test_recursion_limit() checks that 1000 recursive + Python calls (default recursion limit) doesn't crash, but raise a regular + RecursionError exception. In debug mode, Python function calls allocates + more memory on the stack, so use a stack of 8 MiB. */ +#if defined(__ANDROID__) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0 +# ifdef Py_DEBUG +# undef THREAD_STACK_SIZE +# define THREAD_STACK_SIZE 0x800000 +# endif +#endif /* for safety, ensure a viable minimum stacksize */ #define THREAD_STACK_MIN 0x8000 /* 32 KiB */ #else /* !_POSIX_THREAD_ATTR_STACKSIZE */ -- cgit v0.12