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