DEBUG pyqt + ntdll.dll + 随机异常退出

        最近在开发一自动控制的软件,需要实时刷新曲线图,打包部署发现程序会随机崩溃,最艹的是还让部署的那台工控机上另一自控软件崩溃的频率增加了。

        于是定位问题,看windows的应用程序日志发现每次崩溃都指向ntdll.dll(c0000374堆损坏),于是考虑是不是工控机太久没更新的问题,同时网上直接检索ntdll.dll问题的结果也是让用各种方式进行更新或替换。在工控机上找到ntdll.dll,发现果然和开发环境上的ntdll.dll存在版本差异,于是进行替换,后因权限问题作罢。

        但是问题得解决,于是考虑不如加个程序自动启动,检测进程,如果里面没有就直接再启动一个。

        然后偶然发现,开发环境这软件也崩。。。

        最后定位到线程问题了,因为需要实时刷新,同时主界面还需要别的交互,考虑不卡主线程界面,就在子线程(threading.Thread)里进行了数据I/O,数据处理和作图操作。而图表chartView和作图函数都是在主线程里的,结合查到的两条信息:

        1、Python程序因为ntdll.dll和QtGui4.dll崩溃

        2、子线程不能更新主线程UI

        把之前threading.Thread实现的线程作图,改成了基于QThread的信号收发,在主线程里进行最后一步作图,问题得到了解决

你可能感兴趣的:(windows,pyqt5,dll,线程安全)