Message308304
I suggest a runtime check like this:
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index b7463c0ca6..e9d0f638c9 100644
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -34,6 +34,8 @@
#undef THREAD_STACK_SIZE
#define THREAD_STACK_SIZE 0x400000
#endif
+/* minimum size of the default thread stack size */
+#define THREAD_STACK_MIN_DEFAULT 0x100000
/* for safety, ensure a viable minimum stacksize */
#define THREAD_STACK_MIN 0x8000 /* 32 KiB */
#else /* !_POSIX_THREAD_ATTR_STACKSIZE */
@@ -187,6 +189,14 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
PyThreadState *tstate = PyThreadState_GET();
size_t stacksize = tstate ? tstate->interp->pythread_stacksize : 0;
tss = (stacksize != 0) ? stacksize : THREAD_STACK_SIZE;
+ if (tss == 0 && THREAD_STACK_SIZE == 0) {
+ if (pthread_attr_getstacksize(&attrs, &tss) != 0) {
+ pthread_attr_destroy(&attrs);
+ return PYTHREAD_INVALID_THREAD_ID;
+ }
+ if (tss != 0 && tss < THREAD_STACK_MIN_DEFAULT)
+ tss = THREAD_STACK_MIN_DEFAULT;
+ }
if (tss != 0) {
if (pthread_attr_setstacksize(&attrs, tss) != 0) {
pthread_attr_destroy(&attrs);
The reasoning here is:
- if THREAD_STACK_SIZE is set to non-zero, then use that. This is so that you can at compile time set the default stack size to your liking. This is currently set for __APPLE__ and __FreeBSD__ and you can set it via CFLAGS, so this does not change anything for those.
- if THREAD_STACK_SIZE is set to 0, then see if pthread_attr_getstacksize returns anything and if it does, make sure that we have at least 1MB stack size as default.
Scripts that uses threading.stack_size() will still work as before, and you can still manually set the stack size down to 32k (THREAD_STACK_MIN) if you need that.
This should keep existing behavior for known systems like glibc, OSX, FreeBSD, NetBSD but will raise the thread stack size for musl libc and OpenBSD to 1MB.
What do you think? |
|
Date |
User |
Action |
Args |
2017-12-14 15:10:55 | Natanael Copa | set | recipients:
+ Natanael Copa, r.david.murray |
2017-12-14 15:10:55 | Natanael Copa | set | messageid: <1513264255.56.0.213398074469.issue32307@psf.upfronthosting.co.za> |
2017-12-14 15:10:55 | Natanael Copa | link | issue32307 messages |
2017-12-14 15:10:55 | Natanael Copa | create | |
|