返回首頁

GitHub Repo

PyTorch 社群回報 macOS 安裝套件相容性問題,Python 3.15 背景執行緒可能崩潰

10 月 24 日的 PyTorch 社群回報指出,2.14.1 的 macOS arm64 Python 3.15 安裝套件,在背景執行緒回收張量時可能觸發程序崩潰。回報附有最小重現與二進位分析,但根因及正式修復仍待維護者確認。

Pytorch Deepdream (https://github.com/gordicaleksa/pytorch-deepdream) by gordicaleksa (https://github.com/gordicaleksa/pytorch-deepdream/commits?author=gordicaleksa) · MIT · Image source
zh-Hant

PyTorch 社群於 10 月 24 日收到一項二進位相容性回報:在 macOS arm64、Python 3.15.0 與 torch 2.14.1 的組合下,背景執行緒重新取得 Python 全域直譯器鎖(GIL)時,可能發生 segmentation fault。回報者表示,問題最初出現在影片解碼工作執行緒,隨後縮減成只依賴 PyTorch 與小型 C++ 擴充的重現程式。問題回報

觸發流程涉及跨語言物件生命週期:C++ 先保留張量,Python 端刪除對應物件,再由背景執行緒於釋放 GIL 的狀態下清除最後一份 C++ 參照。回報中的堆疊落在 pybind11 的 GIL 管理與張量參照回收路徑。pybind11 官方文件說明,C++ 存取 Python 狀態時須持有 GIL,解構與參照計數也是容易出錯的環節;因此,張量回收同樣可能需要重新取得鎖。GIL 文件

回報者的反組譯分析將疑點指向建置標頭:受測套件存取執行緒狀態欄位的位置,與 Python 3.15 正式版配置不同,因而推測套件使用較早的測試版標頭建置。這仍是提交者的根因判讀,尚不能視為官方定論。其對照測試中,相同 PyTorch 版本搭配 Python 3.14 可通過,受測 nightly 搭配 3.15 也可通過;這些結果只涵蓋列出的環境。分析與對照

對維護本機多模態管線或 C++ 擴充的團隊,這項回報凸顯升級驗證應涵蓋背景執行緒與物件回收,單純成功匯入套件不足以確認相容性。Python 官方資料確認,3.15 已於 10 月 9 日發布,近期遷移者可將此重現案例納入環境檢查。Python 版本說明

截至查核,議題仍開啟,未見維護者確認或修補連結。後續應追蹤官方是否重建套件、公布受影響平台,以及穩定版能否通過相同測試;目前不能將 nightly 的單一成功案例當作完整修復保證。

來源

  1. PyTorch issue #201944:macOS arm64 cp315 wheel 背景執行緒崩潰回報
  2. pybind11:Global Interpreter Lock
  3. What’s new in Python 3.15