summaryrefslogtreecommitdiffstats
path: root/Lib/test/libregrtest/refleak.py
diff options
context:
space:
mode:
authorAntoine Pitrou <pitrou@free.fr>2017-07-22 11:22:54 (GMT)
committerGitHub <noreply@github.com>2017-07-22 11:22:54 (GMT)
commit896145d9d266ee2758cfcd7691238cbc1f9e1ab8 (patch)
tree3b36a7020108c7305a478e174d8a73cdd6deb540 /Lib/test/libregrtest/refleak.py
parent616ecf18f3aacbd8d172e01673877b22fe946e54 (diff)
downloadcpython-896145d9d266ee2758cfcd7691238cbc1f9e1ab8.zip
cpython-896145d9d266ee2758cfcd7691238cbc1f9e1ab8.tar.gz
cpython-896145d9d266ee2758cfcd7691238cbc1f9e1ab8.tar.bz2
bpo-26732: fix too many fds in processes started with the "forkserver" method (#2813)
* bpo-26732: fix too many fds in processes started with the "forkserver" method A child process would inherit as many fds as the number of still-running children. * Add blurb and test comment
Diffstat (limited to 'Lib/test/libregrtest/refleak.py')
-rw-r--r--Lib/test/libregrtest/refleak.py32
1 files changed, 1 insertions, 31 deletions
diff --git a/Lib/test/libregrtest/refleak.py b/Lib/test/libregrtest/refleak.py
index 8e93816..efe5210 100644
--- a/Lib/test/libregrtest/refleak.py
+++ b/Lib/test/libregrtest/refleak.py
@@ -7,36 +7,6 @@ from inspect import isabstract
from test import support
-try:
- MAXFD = os.sysconf("SC_OPEN_MAX")
-except Exception:
- MAXFD = 256
-
-
-def fd_count():
- """Count the number of open file descriptors"""
- if sys.platform.startswith(('linux', 'freebsd')):
- try:
- names = os.listdir("/proc/self/fd")
- return len(names)
- except FileNotFoundError:
- pass
-
- count = 0
- for fd in range(MAXFD):
- try:
- # Prefer dup() over fstat(). fstat() can require input/output
- # whereas dup() doesn't.
- fd2 = os.dup(fd)
- except OSError as e:
- if e.errno != errno.EBADF:
- raise
- else:
- os.close(fd2)
- count += 1
- return count
-
-
def dash_R(the_module, test, indirect_test, huntrleaks):
"""Run a test multiple times, looking for reference leaks.
@@ -174,7 +144,7 @@ def dash_R_cleanup(fs, ps, pic, zdc, abcs):
func1 = sys.getallocatedblocks
func2 = sys.gettotalrefcount
gc.collect()
- return func1(), func2(), fd_count()
+ return func1(), func2(), support.fd_count()
def clear_caches():