From: Victor Stinner Date: Mon, 30 Mar 2015 00:18:31 +0000 (+0200) Subject: Issue #23694: Fix usage of _Py_open() in the _posixsubprocess module X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=160e819a1d0a01fe79b66bf398c925c0dac0ded1;p=python 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. --- diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c index a33df211e9..0b385a1ab1 100644 --- a/Modules/_posixsubprocess.c +++ b/Modules/_posixsubprocess.c @@ -254,10 +254,9 @@ _close_open_fds_safe(int start_fd, PyObject* py_fds_to_keep) { 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) { /* No way to get a list of open fds. */ - PyErr_Clear(); _close_fds_by_brute_force(start_fd, py_fds_to_keep); return; } else {