SF bug #516372:  test_thread: unhandled exc. in thread
Fix exit races in test_thread.py and test_threaded_import.py.
I suspect the bug is provokable only under Linux (where child threads
seem to get lots of cycles before they get killed after the main thread
exits), or on multi-processor machines running other OSes.
Bugfix candidate.
diff --git a/Lib/test/test_thread.py b/Lib/test/test_thread.py
index 02da94e..a45fb2f 100644
--- a/Lib/test/test_thread.py
+++ b/Lib/test/test_thread.py
@@ -97,10 +97,14 @@
         if verbose:
             print 'task', ident, 'leaving barrier', i
     mutex.acquire()
-    running = running - 1
-    if running == 0:
-        done.release()
+    running -= 1
+    # Must release mutex before releasing done, else the main thread can
+    # exit and set mutex to None as part of global teardown; then
+    # mutex.release() raises AttributeError.
+    finished = running == 0
     mutex.release()
+    if finished:
+        done.release()
 
 print '\n*** Barrier Test ***'
 if done.acquire(0):