mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
- Fix Issue #1703448: A joined thread could show up in the
threading.enumerate() list after the join() for a brief period until it actually exited.
This commit is contained in:
parent
64c5677de4
commit
95cd5c0b72
3 changed files with 30 additions and 5 deletions
|
@ -236,6 +236,24 @@ class ThreadTests(unittest.TestCase):
|
|||
"""])
|
||||
self.assertEqual(rc, 42)
|
||||
|
||||
def test_enumerate_after_join(self):
|
||||
# Try hard to trigger #1703448: a thread is still returned in
|
||||
# threading.enumerate() after it has been join()ed.
|
||||
enum = threading.enumerate
|
||||
old_interval = sys.getcheckinterval()
|
||||
sys.setcheckinterval(1)
|
||||
try:
|
||||
for i in xrange(1, 1000):
|
||||
t = threading.Thread(target=lambda: None)
|
||||
t.start()
|
||||
t.join()
|
||||
l = enum()
|
||||
self.assertFalse(t in l,
|
||||
"#1703448 triggered after %d trials: %s" % (i, l))
|
||||
finally:
|
||||
sys.setcheckinterval(old_interval)
|
||||
|
||||
|
||||
class ThreadingExceptionTests(unittest.TestCase):
|
||||
# A RuntimeError should be raised if Thread.start() is called
|
||||
# multiple times.
|
||||
|
|
|
@ -515,11 +515,14 @@ class Thread(_Verbose):
|
|||
if __debug__:
|
||||
self._note("%s.__bootstrap(): normal return", self)
|
||||
finally:
|
||||
self.__stop()
|
||||
try:
|
||||
self.__delete()
|
||||
except:
|
||||
pass
|
||||
with _active_limbo_lock:
|
||||
self.__stop()
|
||||
try:
|
||||
# We don't call self.__delete() because it also
|
||||
# grabs _active_limbo_lock.
|
||||
del _active[_get_ident()]
|
||||
except:
|
||||
pass
|
||||
|
||||
def __stop(self):
|
||||
with self.__block:
|
||||
|
|
|
@ -371,6 +371,10 @@ Core and builtins
|
|||
- Issue #1537: Changed GeneratorExit's base class from Exception to
|
||||
BaseException.
|
||||
|
||||
- Fix Issue #1703448: A joined thread could show up in the
|
||||
threading.enumerate() list after the join() for a brief period until
|
||||
it actually exited.
|
||||
|
||||
Library
|
||||
-------
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue