--- /dev/null
+ o Minor bugfix (process):
+ - Avoid closing all possible FDs when spawning a process (PT). On some systems, this could
+ lead to 3+ minutes hang. Fixes bug 40990; bugfix on 0.3.5.1-alpha.
+
int stdin_pipe[2];
int stdout_pipe[2];
int stderr_pipe[2];
- int retval, fd;
+ int retval;
unix_process = process_get_unix_process(process);
close(stdin_pipe[0]);
close(stdin_pipe[1]);
- /* Close all other fds, including the read end of the pipe. XXX: We should
- * now be doing enough FD_CLOEXEC setting to make this needless.
- */
- for (fd = STDERR_FILENO + 1; fd < max_fd; fd++)
- close(fd);
+ /* Note that we don't close all FDs from here, which we used to do, because
+ * all our open are CLOEXEC. With a very large maximum number of FDs, the
+ * loop was taking a long time: #40990 */
/* Create the argv value for our new process. */
char **argv = process_get_argv(process);