Close the discussion in SF bug 1069160.
diff --git a/Python/pystate.c b/Python/pystate.c
index 1825607..255cf7e 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -320,7 +320,7 @@
 
 /* Asynchronously raise an exception in a thread.
    Requested by Just van Rossum and Alex Martelli.
-   To prevent naive misuse, you must write your own exception
+   To prevent naive misuse, you must write your own extension
    to call this.  Must be called with the GIL held.
    Returns the number of tstates modified; if it returns a number
    greater than one, you're in trouble, and you should call it again
@@ -332,6 +332,7 @@
 	PyInterpreterState *interp = tstate->interp;
 	PyThreadState *p;
 	int count = 0;
+	HEAD_LOCK();
 	for (p = interp->tstate_head; p != NULL; p = p->next) {
 		if (p->thread_id != id)
 			continue;
@@ -340,6 +341,7 @@
 		p->async_exc = exc;
 		count += 1;
 	}
+	HEAD_UNLOCK();
 	return count;
 }