Skip to content

Windows fatal exception: access violation when testing multiprocessing under Windows #10959

Open
@mg-christian-esser

Description

@mg-christian-esser

When testing a trivial multiprocessing snippet of code like:

import multiprocessing as mp

def func_proc():
    pass


def test_func_proc():
    mp.set_start_method("spawn")
    proc = mp.Process(target=func_proc)
    proc.start()
    proc.join()


if __name__ == "__main__":
    mp.set_start_method("spawn")
    proc = mp.Process(target=func_proc)
    proc.start()
    proc.join()

pytest passes the test but also dumps a Windows fatal exception: access violation message along with a stack trace:

(proctest-py3.10) PS W:\temp\proctest> pytest test_process.py
======================================================================================= test session starts =======================================================================================
platform win32 -- Python 3.10.9, pytest-7.3.1, pluggy-1.0.0
rootdir: W:\temp\proctest
collected 1 item

test_process.py Windows fatal exception: access violation

Current thread 0x0000abd8 (most recent call first):
  File "C:\Users\christian.axelsson\AppData\Local\Programs\Python\Python310\lib\multiprocessing\popen_spawn_win32.py", line 110 in wait
  File "C:\Users\christian.axelsson\AppData\Local\Programs\Python\Python310\lib\multiprocessing\process.py", line 149 in join
  File "W:\temp\proctest\test_process.py", line 11 in test_func_proc
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\python.py", line 194 in pytest_pyfunc_call
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_callers.py", line 39 in _multicall
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_manager.py", line 80 in _hookexec
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_hooks.py", line 265 in __call__
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\python.py", line 1799 in runtest
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\runner.py", line 169 in pytest_runtest_call
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_callers.py", line 39 in _multicall
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_manager.py", line 80 in _hookexec
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_hooks.py", line 265 in __call__
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\runner.py", line 262 in <lambda>
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\runner.py", line 341 in from_call
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\runner.py", line 261 in call_runtest_hook
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\runner.py", line 222 in call_and_report
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\runner.py", line 133 in runtestprotocol
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\runner.py", line 114 in pytest_runtest_protocol
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_callers.py", line 39 in _multicall
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_manager.py", line 80 in _hookexec
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_hooks.py", line 265 in __call__
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\main.py", line 348 in pytest_runtestloop
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_callers.py", line 39 in _multicall
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_manager.py", line 80 in _hookexec
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_hooks.py", line 265 in __call__
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\main.py", line 323 in _main
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\main.py", line 269 in wrap_session
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\main.py", line 316 in pytest_cmdline_main
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_callers.py", line 39 in _multicall
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_manager.py", line 80 in _hookexec
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\pluggy\_hooks.py", line 265 in __call__
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\config\__init__.py", line 166 in main
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\lib\site-packages\_pytest\config\__init__.py", line 189 in console_main
  File "C:\Users\christian.axelsson\AppData\Local\pypoetry\Cache\virtualenvs\proctest-qFOhTnEL-py3.10\Scripts\pytest.exe\__main__.py", line 7 in <module>
  File "C:\Users\christian.axelsson\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86 in _run_code
  File "C:\Users\christian.axelsson\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196 in _run_module_as_main
.                                                                                                                                                                            [100%]

======================================================================================== 1 passed in 0.17s ========================================================================================

Executing the script above as python test_process.py yields no unexpected output:

(proctest-py3.10) PS W:\temp\proctest> python test_process.py
(proctest-py3.10) PS W:\temp\proctest>

On Windows 11 22H2 using Python 3.10.9 but have also reproduced on 3.11.3
pip list output:

colorama       0.4.6
exceptiongroup 1.1.1
iniconfig      2.0.0
packaging      23.1
pip            22.2.2
pluggy         1.0.0
pytest         7.3.1
setuptools     65.3.0
tomli          2.0.1
wheel          0.37.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    platform: windowswindows platform-specific problemtype: bugproblem that needs to be addressedtype: selftestsa problem in the tests of pytest

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions