QT C++ C:\Windows\SYSTEM32\ntdll.dll错误异常

项目用Qt Creator 4.0.3+QT 5.6.3 MINGW windows下编写。

项目中使用多线程操作SqlServer数据库,编写完毕后本地测试验证无异常,发给客户使用。

客户处有多台工控机运行本软件,但是其中一台不定时的出现C:\Windows\SYSTEM32\ntdll.dll错误,表现就是运行过程中突然界面卡死,然后白屏崩溃。

研发本地进行多天的操作复现,没有复现出问题。

1、排查是否是ntdll库版本等问题(×)

2、排查是不是ntdll需要重新注册(×)

3、排查是否是ntdll关联库出现问题(×)

4、排查是否ntdll某些服务被杀毒软件杀掉(×)

5、排查是否是网络不稳定,导致使用的数据库连接出现问题(×)

6、排查是否是多台设备同时操作数据库出现问题(×)

7、排查是否存在数据越界、野指针等问题,拍完后无发现(×)

8、然后用heob排查是否是内存泄漏,排完也没出现内存泄漏问题(×)

就差管微软要ntdll源码来定位了!!!!!

最最最最后梳理数据库操作逻辑,发现有一处在批量修改数据库参数时,某一特定情况下会去重置数据库连接状态,正在操作中突然进行断开重连,有可能导致出现ntdll.dll异常,由于是业务逻辑导致的数据库操作问题,捕获的异常信息就是ntdll操作(理想状态是能定位到代码块,然而现实是抛出的库错误)(√)。

解决方案:修改这个不符合逻辑的操作,解决问题。

结论:

这个ntdll问题,在我本地完全没有复现出来,结合本地环境和生产环境,本地的设备配置甩生产环境N条街,生产环境可能是在设备某一时刻处理能力较差时,触发到了这个荒谬的逻辑导致界面卡死崩溃,归根结底也是在业务逻辑中没有处理好操作顺序(实际是很小很短的一串代码,没有引起关注)。

你可能感兴趣的:(QT,QT,崩溃日志,异常解决,windows,qt,c++)