`test_multiprocessing_spawn.test_processes` flaky tests on Windows
未關閉
還沒有人認領這個 Issue。
OS-windows
tests
topic-multiprocessing
type-bug
- 主要語言
- Python
- 星號
- 77.2k
- 分支
- 36k
- PR 合併指標
- PR 指標待擷取
描述
Bug report
Seen on Windows free threading build, but not free threading specific:
https://github.com/python/cpython/actions/runs/13606907022/job/38039459160?pr=130732
This is in Windows specific code. Not yet sure if this is free threading specific.
ERROR: test_async_error_callback (test.test_multiprocessing_spawn.test_processes.WithProcessesTestPoolWorkerErrors.test_async_error_callback)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\a\cpython\cpython\Lib\test\_test_multiprocessing.py", line 3101, in test_async_error_callback
p.close()
~~~~~~~^^
File "D:\a\cpython\cpython\Lib\multiprocessing\pool.py", line 652, in close
self._change_notifier.put(None)
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "D:\a\cpython\cpython\Lib\multiprocessing\queues.py", line 394, in put
self._writer.send_bytes(obj)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^
File "D:\a\cpython\cpython\Lib\multiprocessing\connection.py", line 206, in send_bytes
self._send_bytes(m[offset:offset + size])
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\a\cpython\cpython\Lib\multiprocessing\connection.py", line 293, in _send_bytes
raise ValueError("concurrent send_bytes() calls "
"are not supported")
ValueError: concurrent send_bytes() calls are not supported
Also `test_traceback`:
ERROR: test_traceback (test.test_multiprocessing_spawn.test_processes.WithProcessesTestPool.test_traceback)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\a\cpython\cpython\Lib\test\_test_multiprocessing.py", line 2974, in test_traceback
with self.Pool(1) as p:
~~~~~~~~~^^^
File "D:\a\cpython\cpython\Lib\multiprocessing\pool.py", line 739, in __exit__
self.terminate()
~~~~~~~~~~~~~~^^
File "D:\a\cpython\cpython\Lib\multiprocessing\pool.py", line 657, in terminate
self._terminate()
~~~~~~~~~~~~~~~^^
File "D:\a\cpython\cpython\Lib\multiprocessing\util.py", line 216, in __call__
res = self._callback(*self._args, **self._kwargs)
File "D:\a\cpython\cpython\Lib\multiprocessing\pool.py", line 690, in _terminate_pool
change_notifier.put(None)
~~~~~~~~~~~~~~~~~~~^^^^^^
File "D:\a\cpython\cpython\Lib\multiprocessing\queues.py", line 394, in put
self._writer.send_bytes(obj)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^
File "D:\a\cpython\cpython\Lib\multiprocessing\connection.py", line 206, in send_bytes
self._send_bytes(m[offset:offset + size])
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\a\cpython\cpython\Lib\multiprocessing\connection.py", line 293, in _send_bytes
raise ValueError("concurrent send_bytes() calls "
"are not supported")
ValueError: concurrent send_bytes() calls are not supported
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
從 test.test_multiprocessing_spawn.test_processes 和 Lib/test/_test_multiprocessing.py 中失敗的案例開始,接著透過 Lib/multiprocessing/pool.py、queues.py 和 connection.py 追蹤 Windows 失敗。在 Windows 上重現這些失敗,並找出為什麼會發生並行的 send_bytes 呼叫;完成的標準是受影響的測試不再間歇性失敗,且此行為由適當的測試涵蓋。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- python
- 領域
- operating-systems, testing-qa
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 需要釐清
- 新手友好度
- 35/100