summaryrefslogtreecommitdiffstats
path: root/Lib/test/lock_tests.py
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2009-11-09 16:08:16 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2009-11-09 16:08:16 (GMT)
commitb087268217703887c08d580c888813162634353f (patch)
tree31f254e024597a7f45a1f5400fd0404dc7a6fb73 /Lib/test/lock_tests.py
parent3c573af16232928f5623f8fbe0625ecddeaa307a (diff)
downloadcpython-b087268217703887c08d580c888813162634353f.zip
cpython-b087268217703887c08d580c888813162634353f.tar.gz
cpython-b087268217703887c08d580c888813162634353f.tar.bz2
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 f9c2259..04f7422 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):
"""