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 C++ C:\Windows\SYSTEM32\ntdll.dll错误异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ | 通讯录管理系统
- 下一篇: HTTP上传数据 :表单,二进制数据(m