diff options
Diffstat (limited to 'Lib/threading.py')
-rw-r--r-- | Lib/threading.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/Lib/threading.py b/Lib/threading.py index 1d59cb0..b541d77 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -835,16 +835,19 @@ def _after_fork(): new_active = {} current = current_thread() with _active_limbo_lock: - for ident, thread in _active.items(): + for thread in _active.values(): 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._ident = ident new_active[ident] = thread else: # All the others are already stopped. # We don't call _Thread__stop() because it tries to acquire # thread._Thread__block which could also have been held while # we forked. - thread._Thread__stopped = True + thread._stopped = True _limbo.clear() _active.clear() |