summaryrefslogtreecommitdiff
path: root/Lib/test/lock_tests.py
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2009-11-09 16:08:16 +0000
committerAntoine Pitrou <solipsis@pitrou.net>2009-11-09 16:08:16 +0000
commit0f04207b04bc8c57db7541b191e6349823632739 (patch)
tree863a5eaa09546e37c94b9e846acde60a010a3a27 /Lib/test/lock_tests.py
parentb78877155f3117e6dd34ab43f007a93b5a25bfaa (diff)
downloadcpython-0f04207b04bc8c57db7541b191e6349823632739.tar.gz
Merged revisions 76172 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r76172 | antoine.pitrou | 2009-11-09 17:00:11 +0100 (lun., 09 nov. 2009) | 5 lines Issue #7282: Fix a memory leak when an RLock was used in a thread other than those started through `threading.Thread` (for example, using `thread.start_new_thread()`. ........
Diffstat (limited to 'Lib/test/lock_tests.py')
-rw-r--r--Lib/test/lock_tests.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/Lib/test/lock_tests.py b/Lib/test/lock_tests.py
index f9c2259914..04f7422c8d 100644
--- a/Lib/test/lock_tests.py
+++ b/Lib/test/lock_tests.py
@@ -130,6 +130,19 @@ class BaseLockTests(BaseTestCase):
# Check the lock is unacquired
Bunch(f, 1).wait_for_finished()
+ def test_thread_leak(self):
+ # The lock shouldn't leak a Thread instance when used from a foreign
+ # (non-threading) thread.
+ lock = self.locktype()
+ def f():
+ lock.acquire()
+ lock.release()
+ n = len(threading.enumerate())
+ # We run many threads in the hope that existing threads ids won't
+ # be recycled.
+ Bunch(f, 15).wait_for_finished()
+ self.assertEqual(n, len(threading.enumerate()))
+
class LockTests(BaseLockTests):
"""