Backport relevant part of r66274 (in issue #874900).
diff --git a/Lib/threading.py b/Lib/threading.py
index 25eb9b6..a776c66 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -847,9 +847,12 @@
     new_active = {}
     current = current_thread()
     with _active_limbo_lock:
-        for ident, thread in _active.iteritems():
+        for thread in _active.itervalues():
             if thread is current:
-                # There is only one active thread.
+                # There is only one active thread. We reset the ident to
+                # its new value since it can have changed.
+                ident = _get_ident()
+                thread._Thread__ident = ident
                 new_active[ident] = thread
             else:
                 # All the others are already stopped.