jim800121chen
abbe9d4c0b
fix(local-tool): DeviceGroup.__del__ access violation 全面修復
上一個 commit (a6a121a) 只修了 script 結束時的 cleanup,但使用者仍在
connect 重試路徑看到 access violation:
connect attempt 1 failed → 新 connect attempt 2 → GC 回收 attempt 1
的舊 DeviceGroup → __del__ → kp_disconnect_devices 對已失效的 native
handle → OSError: access violation
根因:`_device_group = None` 只是清掉 Python reference,舊物件的 __del__
會延遲到下一次 GC cycle(可能發生在新 connect call 的 allocation 時),
此時 native handle 已 invalid。
修法:
- 新增 `_clear_device_group()` helper:先 kp.core.disconnect_devices 把
native handle 正常釋放(errors silenced),再設 None
- 全檔搜 `_device_group = None` 共 12 處,除了初始宣告(L40)和兩個 helper
自身(_clear_device_group / _cleanup)以外全部替換為 _clear_device_group()
- 涵蓋所有 code path:connect retry / firmware load reconnect / disconnect
handler / reset handler / error fallback
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 17:20:12 +08:00
..
2026-04-11 22:10:38 +08:00
2026-04-12 23:11:47 +08:00
2026-04-16 17:20:12 +08:00
2026-04-11 22:10:38 +08:00