mirror of https://github.com/python/cpython
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:
parent
e7bb7c2f04
commit
4a08c4c469
|
@ -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.
|
|
@ -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
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue