PyOS_CheckStack now understands multiple threads. Other threads are not stack-checked, but at least they don't appear to always be out of stack.
diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c
index 240fc01..67c3918 100644
--- a/Mac/Python/macglue.c
+++ b/Mac/Python/macglue.c
@@ -412,12 +412,24 @@
{
char here;
static char *sentinel = 0;
+ static PyThreadState *thread_for_sentinel = 0;
if ( sentinel == 0 ) {
sentinel = &here - StackSpace() + MINIMUM_STACK_SIZE;
}
- if ( &here < sentinel )
- return -1;
+ if ( thread_for_sentinel == 0 ) {
+ thread_for_sentinel = PyThreadState_Get();
+ }
+ if ( &here < sentinel ) {
+ if (thread_for_sentinel == PyThreadState_Get()) {
+ return -1;
+#if 0
+ } else {
+ /* Else we are unsure... */
+ fprintf(stderr, "Stackcheck in other thread (was %x now %x)\n", thread_for_sentinel,PyThreadState_Get());
+#endif
+ }
+ }
return 0;
}
#endif /* USE_STACKCHECK */