updated for version 7.3.691
Problem:    State specific to the Python thread is discarded.
Solution:   Keep state between threads. (Paul)
diff --git a/src/if_python.c b/src/if_python.c
index c194598..2a53c93 100644
--- a/src/if_python.c
+++ b/src/if_python.c
@@ -740,9 +740,11 @@
 #else
 	PyMac_Initialize();
 #endif
-	/* initialise threads */
+	/* Initialise threads and save the state using PyGILState_Ensure.
+	 * Without this call, thread-specific state (such as the system trace
+	 * hook), will be lost between invocations of Python code.  */
 	PyEval_InitThreads();
-
+	pygilstate = PyGILState_Ensure();
 #ifdef DYNAMIC_PYTHON
 	get_exceptions();
 #endif