You can have more than one thread state for a thread if they
correspond to different interpreters (I hope, please revert if this is
wrong :).
diff --git a/Python/pystate.c b/Python/pystate.c
index abca8dd..e2cf7c5 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -289,7 +289,7 @@
#if defined(Py_DEBUG) && defined(WITH_THREAD)
if (new) {
PyThreadState *check = PyGILState_GetThisThreadState();
- if (check && check != new)
+ if (check && check->interp == new->interp && check != new)
Py_FatalError("Invalid thread state for this thread");
}
#endif