]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-141659: Fix bad file descriptor error in subprocess on AIX (GH-141660)
authorAyappan Perumal <ayappap2@in.ibm.com>
Wed, 19 Nov 2025 07:37:09 +0000 (13:07 +0530)
committerGitHub <noreply@github.com>
Wed, 19 Nov 2025 07:37:09 +0000 (09:37 +0200)
/proc/self does not exist on AIX.

Misc/NEWS.d/next/Core_and_Builtins/2025-11-17-08-16-30.gh-issue-141659.QNi9Aj.rst [new file with mode: 0644]
Modules/_posixsubprocess.c

diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-11-17-08-16-30.gh-issue-141659.QNi9Aj.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-11-17-08-16-30.gh-issue-141659.QNi9Aj.rst
new file mode 100644 (file)
index 0000000..eeb055c
--- /dev/null
@@ -0,0 +1 @@
+Fix bad file descriptor errors from ``_posixsubprocess`` on AIX.
index 0219a3360fd6b1b58b3a63ea43e438a262822b30..6f0a6d1d4e37fea3e47e1d2ea210aa04c68ec8e8 100644 (file)
@@ -514,7 +514,13 @@ _close_open_fds_maybe_unsafe(int start_fd, int *fds_to_keep,
         proc_fd_dir = NULL;
     else
 #endif
+#if defined(_AIX)
+        char fd_path[PATH_MAX];
+        snprintf(fd_path, sizeof(fd_path), "/proc/%ld/fd", (long)getpid());
+        proc_fd_dir = opendir(fd_path);
+#else
         proc_fd_dir = opendir(FD_DIR);
+#endif
     if (!proc_fd_dir) {
         /* No way to get a list of open fds. */
         _close_range_except(start_fd, -1, fds_to_keep, fds_to_keep_len,