修复 task_queue 信号 lambda connect 跨线程 GUI 调用导致的 access violation
faulthandler 抓到 7 个 Windows access violation 栈, 全部归到同一根因: worker_ref.finished/error/progress (QThread 信号) 和 task_completed 用 lambda connect 时, lambda 没有 QObject thread affinity, Qt 默认按 DirectConnection 处理, 导致 lambda 在 worker 线程同步执行, 链路尽头 动主线程 GUI (refresh_history / _update_summary / display_image) → C++ 层 access violation。 Windows 表现为 fatal exception: access violation, 用户感知"crash"; macOS 触发后多被 SIGKILL 静默闪退, faulthandler 拦不到, 这就是最近 "Mac 仍闪退"剩余尾巴的同源问题。 修复: 5 处 lambda connect 全部显式 Qt.QueuedConnection, 强制 handler 进 receiver 主线程 event loop 排队, 彻底消除跨线程 GUI 调用。
Showing
2 changed files
with
17 additions
and
5 deletions
-
Please register or sign in to post a comment