DescriptionChristian Heimes
2019-08-27 07:32:04 UTC
Description of problem:
Python 3.8 started to prohibit fork() calls in subinterpreters (see bpo-34651). This also affects subprocess.Popen() calls. Only under some cases subprocess.Popen() uses posix_spawn() instead of fork() + exec(). The new restriction breaks software that executes external commands from a subinterpreter like mod_wsgi applications.
For example FreeIPA server is affected by the regression. It's no longer possible to install FreeIPA on Fedora rawhide.
Version-Release number of selected component (if applicable):
Python 3.8b3
How reproducible:
always
Steps to Reproduce:
1. Execute a subprocess under mod_wsgi (e.g. ipa-server-install)
Actual results:
...
File "/usr/lib64/python3.8/subprocess.py", line 829, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib64/python3.8/subprocess.py", line 1608, in _execute_child
self.pid = _posixsubprocess.fork_exec(
RuntimeError: fork not supported for subinterpreters
Expected results:
No error
Additional info:
https://bugs.python.org/issue37951
Thanks Christian. I've been trying to say this in https://bugs.python.org/issue34651#msg343364 but nothing happened. Thanks for tackling this down. Any chance the fix will be in 3.8.0b4?
You are welcome, Miro.
I saw your comment after I started digging into the issue, excellent deduction! :) I assume that the consequences were not fully clear to Victor and Eric. Almost nobody uses subinterpreters -- except for some embedded cases and mod_wsgi.
I forgot that 3.8b4 release is imminent. The fix has landed in 3.8 and 3.8b4 is scheduled to be released yesterday. I dropped Łukasz a mail and informed him that 3.8b4 is unblocked again. You are right, let's wait for 3.8b4.
Description of problem: Python 3.8 started to prohibit fork() calls in subinterpreters (see bpo-34651). This also affects subprocess.Popen() calls. Only under some cases subprocess.Popen() uses posix_spawn() instead of fork() + exec(). The new restriction breaks software that executes external commands from a subinterpreter like mod_wsgi applications. For example FreeIPA server is affected by the regression. It's no longer possible to install FreeIPA on Fedora rawhide. Version-Release number of selected component (if applicable): Python 3.8b3 How reproducible: always Steps to Reproduce: 1. Execute a subprocess under mod_wsgi (e.g. ipa-server-install) Actual results: ... File "/usr/lib64/python3.8/subprocess.py", line 829, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/lib64/python3.8/subprocess.py", line 1608, in _execute_child self.pid = _posixsubprocess.fork_exec( RuntimeError: fork not supported for subinterpreters Expected results: No error Additional info: https://bugs.python.org/issue37951