QT C++ C:\Windows\SYSTEM32\ntdll.dll错误异常
項(xiàng)目用Qt Creator 4.0.3+QT 5.6.3 MINGW windows下編寫。
項(xiàng)目中使用多線程操作SqlServer數(shù)據(jù)庫,編寫完畢后本地測試驗(yàn)證無異常,發(fā)給客戶使用。
客戶處有多臺工控機(jī)運(yùn)行本軟件,但是其中一臺不定時的出現(xiàn)C:\Windows\SYSTEM32\ntdll.dll錯誤,表現(xiàn)就是運(yùn)行過程中突然界面卡死,然后白屏崩潰。
研發(fā)本地進(jìn)行多天的操作復(fù)現(xiàn),沒有復(fù)現(xiàn)出問題。
1、排查是否是ntdll庫版本等問題(×)
2、排查是不是ntdll需要重新注冊(×)
3、排查是否是ntdll關(guān)聯(lián)庫出現(xiàn)問題(×)
4、排查是否ntdll某些服務(wù)被殺毒軟件殺掉(×)
5、排查是否是網(wǎng)絡(luò)不穩(wěn)定,導(dǎo)致使用的數(shù)據(jù)庫連接出現(xiàn)問題(×)
6、排查是否是多臺設(shè)備同時操作數(shù)據(jù)庫出現(xiàn)問題(×)
7、排查是否存在數(shù)據(jù)越界、野指針等問題,拍完后無發(fā)現(xiàn)(×)
8、然后用heob排查是否是內(nèi)存泄漏,排完也沒出現(xiàn)內(nèi)存泄漏問題(×)
就差管微軟要ntdll源碼來定位了!!!!!
最最最最后梳理數(shù)據(jù)庫操作邏輯,發(fā)現(xiàn)有一處在批量修改數(shù)據(jù)庫參數(shù)時,某一特定情況下會去重置數(shù)據(jù)庫連接狀態(tài),正在操作中突然進(jìn)行斷開重連,有可能導(dǎo)致出現(xiàn)ntdll.dll異常,由于是業(yè)務(wù)邏輯導(dǎo)致的數(shù)據(jù)庫操作問題,捕獲的異常信息就是ntdll操作(理想狀態(tài)是能定位到代碼塊,然而現(xiàn)實(shí)是拋出的庫錯誤)(√)。
解決方案:修改這個不符合邏輯的操作,解決問題。
結(jié)論:
這個ntdll問題,在我本地完全沒有復(fù)現(xiàn)出來,結(jié)合本地環(huán)境和生產(chǎn)環(huán)境,本地的設(shè)備配置甩生產(chǎn)環(huán)境N條街,生產(chǎn)環(huán)境可能是在設(shè)備某一時刻處理能力較差時,觸發(fā)到了這個荒謬的邏輯導(dǎo)致界面卡死崩潰,歸根結(jié)底也是在業(yè)務(wù)邏輯中沒有處理好操作順序(實(shí)際是很小很短的一串代碼,沒有引起關(guān)注)。
總結(jié)
以上是生活随笔為你收集整理的QT C++ C:\Windows\SYSTEM32\ntdll.dll错误异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ | 通讯录管理系统
- 下一篇: s3c2440移植MQTT