Commit 160e819a authored by Victor Stinner's avatar Victor Stinner

Issue #23694: Fix usage of _Py_open() in the _posixsubprocess module

Don't call _Py_open() from _close_open_fds_safe() because it is call just after
fork(). It's not good to play with locks (the GIL) between fork() and exec().

Use instead _Py_open_noraise() which doesn't touch to the GIL.
parent e4a994d6
...@@ -254,10 +254,9 @@ _close_open_fds_safe(int start_fd, PyObject* py_fds_to_keep) ...@@ -254,10 +254,9 @@ _close_open_fds_safe(int start_fd, PyObject* py_fds_to_keep)
{ {
int fd_dir_fd; int fd_dir_fd;
fd_dir_fd = _Py_open(FD_DIR, O_RDONLY); fd_dir_fd = _Py_open_noraise(FD_DIR, O_RDONLY);
if (fd_dir_fd == -1) { if (fd_dir_fd == -1) {
/* No way to get a list of open fds. */ /* No way to get a list of open fds. */
PyErr_Clear();
_close_fds_by_brute_force(start_fd, py_fds_to_keep); _close_fds_by_brute_force(start_fd, py_fds_to_keep);
return; return;
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment