bpo-47151: Fallback to fork when vfork fails in subprocess. (GH-32186)

bpo-47151: Fallback to fork when vfork fails in subprocess. An OS kernel can specifically decide to disallow vfork() in a process. No need for that to prevent us from launching subprocesses.
This commit is contained in:
Gregory P. Smith
2022-03-31 13:42:28 -07:00
committed by GitHub
parent e7bb7c2f04
commit 4a08c4c469
2 changed files with 9 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
When subprocess tries to use vfork, it now falls back to fork if vfork
returns an error. This allows use in situations where vfork isn't allowed
by the OS kernel.

View File

@@ -685,6 +685,12 @@ do_fork_exec(char *const exec_array[],
assert(preexec_fn == Py_None);
pid = vfork();
if (pid == -1) {
/* If vfork() fails, fall back to using fork(). When it isn't
* allowed in a process by the kernel, vfork can return -1
* with errno EINVAL. https://bugs.python.org/issue47151. */
pid = fork();
}
} else
#endif
{