diff options
author | Ronald Oussoren <ronaldoussoren@mac.com> | 2023-12-07 10:30:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-07 10:30:15 +0100 |
commit | 953ee622b3901d3467e65e3484dcfa75ba6fcddf (patch) | |
tree | a5dcb5ddab732674a05a13a8f6fce6d0951a998d | |
parent | 16448cab44e23d350824e9ac75e699f5bcc48a14 (diff) | |
download | cpython-953ee622b3901d3467e65e3484dcfa75ba6fcddf.tar.gz cpython-953ee622b3901d3467e65e3484dcfa75ba6fcddf.zip |
gh-109981: Fix support.fd_count() on macOS 14 (#112797)
Use scanning "/dev/fd/" on macOS in support.fd_count(). That's both more efficient than scanning all possible file descriptors, and avoids crashing the interpreter when there are open "guarded" file descriptors.
"Guarded" file descriptors are a macOS feature where file descriptors used by system libraries are marked and cause hard crashes when used by "user" code.
Co-authored-by: Victor Stinner <vstinner@python.org>
-rw-r--r-- | Lib/test/support/os_helper.py | 11 | ||||
-rw-r--r-- | Misc/NEWS.d/next/macOS/2023-12-06-12-11-13.gh-issue-109981.mOHg10.rst | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/Lib/test/support/os_helper.py b/Lib/test/support/os_helper.py index 46ae53aa11a..7a67d87fb9e 100644 --- a/Lib/test/support/os_helper.py +++ b/Lib/test/support/os_helper.py @@ -592,10 +592,17 @@ def fd_count(): """Count the number of open file descriptors. """ if sys.platform.startswith(('linux', 'freebsd', 'emscripten')): + fd_path = "/proc/self/fd" + elif sys.platform == "darwin": + fd_path = "/dev/fd" + else: + fd_path = None + + if fd_path is not None: try: - names = os.listdir("/proc/self/fd") + names = os.listdir(fd_path) # Subtract one because listdir() internally opens a file - # descriptor to list the content of the /proc/self/fd/ directory. + # descriptor to list the content of the directory. return len(names) - 1 except FileNotFoundError: pass diff --git a/Misc/NEWS.d/next/macOS/2023-12-06-12-11-13.gh-issue-109981.mOHg10.rst b/Misc/NEWS.d/next/macOS/2023-12-06-12-11-13.gh-issue-109981.mOHg10.rst new file mode 100644 index 00000000000..f86ab2c37ee --- /dev/null +++ b/Misc/NEWS.d/next/macOS/2023-12-06-12-11-13.gh-issue-109981.mOHg10.rst @@ -0,0 +1,3 @@ +Use ``/dev/fd`` on macOS to determine the number of open files in +``test.support.os_helper.fd_count`` to avoid a crash with "guarded" file +descriptors when probing for open files. |