* gh-105912: document gotcha with using os.fork on macOS
Using ``fork(2)`` on macOS when also using higher-level
system APIs in the parent proces can crash on macOS because
those system APIs are not written to handle this usage
pattern.
There's nothing we can do about this other than documenting
the problem.
(cherry picked from commit
22511f77c2818a138a252e6ddae89725d082f8b0)
Co-authored-by: Carol Willing <carolcode@willingconsulting.com>
.. audit-event:: os.fork "" os.fork
+ .. warning::
+
+ On macOS the use of this function is unsafe when mixed with using
+ higher-level system APIs, and that includes using :mod:`urllib.request`.
+
.. versionchanged:: 3.8
Calling ``fork()`` in a subinterpreter is no longer supported
(:exc:`RuntimeError` is raised).
.. audit-event:: os.forkpty "" os.forkpty
+ .. warning::
+
+ On macOS the use of this function is unsafe when mixed with using
+ higher-level system APIs, and that includes using :mod:`urllib.request`.
+
.. versionchanged:: 3.8
Calling ``forkpty()`` in a subinterpreter is no longer supported
(:exc:`RuntimeError` is raised).
file descriptor connected to the child's controlling terminal (and also to the
child's standard input and output).
+ .. warning:: On macOS the use of this function is unsafe when mixed with using
+ higher-level system APIs, and that includes using :mod:`urllib.request`.
+
.. function:: openpty()
The `Requests package <https://requests.readthedocs.io/en/master/>`_
is recommended for a higher-level HTTP client interface.
+.. warning::
+
+ On macOS it is unsafe to use this module in programs using
+ :func:`os.fork` because the :func:`getproxies` implementation for
+ macOS uses a higher-level system API. Set the environment variable
+ ``no_proxy`` to ``*`` to avoid this problem
+ (e.g. ``os.environ["no_proxy"] = "*"``).
+
.. include:: ../includes/wasm-notavail.rst
The :mod:`urllib.request` module defines the following functions: