【Qt bug排查】Qt项目debug模式下,关闭可视化界面后,后台程序不退出,依然在打印log

日志显示都已经析构完成,就是不打印主线程最后的 log(见上图:MAIN 应用程序退出)。

原因:新增的 Cdu 服务器业务类,在析构函数中使用了 QMetaObject::invokeMethod +阻塞的方式调用了自己所在子线程的 closeUdp() 方法,导致死锁。

单步执行 31 行,会跳转到下面这个地方,再也出不去,导致主程退出失败(现象:可视化界面没了,但是程序还在运行)

总结: 析构函数执行期间,禁止使用 QMetaObject::invokeMethod 以阻塞连接方式调用当前对象的成员方法(包括其所在子线程的方法),也禁止在该调用中访问当前对象的成员变量。 否则会导致死锁!

核心结论:析构函数中,阻塞模式调用自身 / 自身子线程的方法 / 访问自身成员 是高危操作 !

相关推荐
lili00122 小时前
Claude自动修Bug配置优化与避坑指南
java·人工智能·python·bug·ai编程
小陶来咯1 天前
agent × 豆包:端到端语音实时交互
网络·ai·机器人·bug·交互
鬼才血脉2 天前
Idea使用Tomact运行项目,控制台输出中文乱码
tomcat·bug
NiceCloud喜云2 天前
Anthropic 发布 Project Glasswing:未公开模型 Mythos 已挖出 10000+ 漏洞,含 OpenBSD 27 年老 bug
android·java·数据库·c++·python·docker·bug
xufengzhu3 天前
臻识摄像头黑屏Bug 处理
bug·图像识别·摄像头
李永奉3 天前
杰理SDK开发-【BUG】软件开启音量同步连接华为、荣耀手机没有自动开启音量同步
单片机·嵌入式硬件·mcu·物联网·智能手机·bug·语音识别
堕2743 天前
软件测试bug篇
bug·压力测试
java修仙传4 天前
Java 实习日记:断面分析基态限额为空问题的排查与修复
java·开发语言·bug·实习
tkokof14 天前
捉虫(Bug)再记
游戏·bug·游戏开发
会周易的程序员4 天前
AI 编程助手:从“猫弄乱的线团”到“击鼓传花”的 Bug 修复
c++·人工智能·物联网·架构·bug·iot