Prevent threading.Thread.join() from blocking when a previous call raised an

exception (e.g., passing in an illegal argument).

Applies patch #1314396.  Thanks Eric Blossom.
This commit is contained in:
Brett Cannon 2005-11-23 02:15:50 +00:00
parent 5c6e0a1a0c
commit ad07ff2c77
3 changed files with 23 additions and 16 deletions

View File

@ -536,6 +536,7 @@ class Thread(_Verbose):
if not self.__stopped:
self._note("%s.join(): waiting until thread stops", self)
self.__block.acquire()
try:
if timeout is None:
while not self.__stopped:
self.__block.wait()
@ -553,6 +554,7 @@ class Thread(_Verbose):
else:
if __debug__:
self._note("%s.join(): thread stopped", self)
finally:
self.__block.release()
def getName(self):

View File

@ -63,6 +63,7 @@ Roy Bixler
Martin Bless
Pablo Bleyer
Erik van Blokland
Eric Blossom
Finn Bock
Paul Boddie
Matthew Boedicker

View File

@ -284,6 +284,10 @@ Extension Modules
Library
-------
- Patch #1314396: prevent deadlock for threading.Thread.join() when an exception
is raised within the method itself on a previous call (e.g., passing in an
illegal argument)
- Bug #1340337: change time.strptime() to always return ValueError when there
is an error in the format string.