Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

python3Packages.pytest-xdist: Treat --forked problems on darwin #194308

Merged
merged 1 commit into from
Oct 4, 2022

Commits on Oct 4, 2022

  1. python3Packages.pytest-xdist: Disable fork safety on darwin

    We run pytest with `--forked` in nixpkgs, to reduce side effects that
    can occur when multiple tests mutate their environment in incompatible
    ways.
    
    Forking on macOS 10.13 and later is unsafe when an application does work
    between calls to fork() and its followup exec(). This may lead to
    crashes when calls into the Objective-C runtime are issued, which will
    in turn coredump the Python interpreter.
    
    One good reproducer for this scenario is when the urllib module tries
    to lookup proxy configurations in `urllib.request.getproxies()` through
    `get_proxies_macos_sysconf` into the native `_scproxy` module.
    
    This is a class of issues that is of course not limited to the urllib
    module. The general recommendation is to use `spawn` instead of `fork`,
    but we don't have any influence on upstream developers to do one or the
    other.
    
    One often cited workaround would be to disable fork safety entirely on
    calls to `initialize()`, which is probably a better solution than
    running without multithreading (slow) or without the `--forked` (prone
    to side effects) mode.
    
    This currently happens on aarch64-linux only, where we use more recent
    11.0 SDK version, while x86_64-darwin has been stuck on 10.12 for a
    while now.
    
    python/cpython#77906 (comment)
    http://www.sealiesoftware.com/blog/archive/2017/6/5/Objective-C_and_fork_in_macOS_1013.html
    
    Closes: NixOS#194290
    mweinelt committed Oct 4, 2022
    Configuration menu
    Copy the full SHA
    2ba40b5 View commit details
    Browse the repository at this point in the history