Open
Description
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