Message308307
Exactly same as previous patch, but refactored to only have a single pthread_attr_destroy() call instead of 3.
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index b7463c0ca6..1006a168fa 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 */
@@ -167,7 +169,7 @@ unsigned long
PyThread_start_new_thread(void (*func)(void *), void *arg)
{
pthread_t th;
- int status;
+ int status = -1;
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
pthread_attr_t attrs;
#endif
@@ -187,11 +189,15 @@ 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)
+ goto thread_abort;
+ 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);
- return PYTHREAD_INVALID_THREAD_ID;
- }
+ if (pthread_attr_setstacksize(&attrs, tss) != 0)
+ goto thread_abort;
}
#endif
#if defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
@@ -209,6 +215,7 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
);
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
+thread_abort:
pthread_attr_destroy(&attrs);
#endif
if (status != 0) |
|
Date |
User |
Action |
Args |
2017-12-14 15:31:35 | Natanael Copa | set | recipients:
+ Natanael Copa, r.david.murray |
2017-12-14 15:31:35 | Natanael Copa | set | messageid: <1513265495.4.0.213398074469.issue32307@psf.upfronthosting.co.za> |
2017-12-14 15:31:35 | Natanael Copa | link | issue32307 messages |
2017-12-14 15:31:35 | Natanael Copa | create | |
|