summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/threading.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/Lib/threading.py b/Lib/threading.py
index d49be0b..4d3c6f6 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -552,6 +552,10 @@ class Thread:
self._tstate_lock = None
self._started = Event()
self._stopped = Event()
+ # _is_stopped should be the same as _stopped.is_set(). The bizarre
+ # duplication is to allow test_is_alive_after_fork to pass on old
+ # Linux kernels. See issue 18808.
+ self._is_stopped = False
self._initialized = True
# sys.stderr is not stored in the class like
# sys.exc_info since it can be changed between instances
@@ -707,6 +711,7 @@ class Thread:
def _stop(self):
self._stopped.set()
+ self._is_stopped = True
def _delete(self):
"Remove current thread from the dict of currently running threads."
@@ -793,7 +798,7 @@ class Thread:
assert self._initialized, "Thread.__init__() not called"
if not self._started.is_set():
return False
- if not self._stopped.is_set():
+ if not self._is_stopped:
return True
# The Python part of the thread is done, but the C part may still be
# waiting to run.