WinXp下,啓動navicat後,點擊菜單欄時,出現access violation at *** address in module 'navicat.exe'. Read of address

上週五幫同事在Windows下安裝Navicat Premium客戶端,打開該軟件,訪問其菜單欄下的【查看】菜單出錯,見下圖1:


                       圖1

出現此問題的原因是內存訪問越界,說白了,就是說它訪問了不該訪問的存儲區。

其實,這個問題在我的Windows上也存在,不過因它能滿足我的正常需求,倒也沒有引起我的重視。一開始,我一直以爲是程序兼容性問題,後來在同事那以兼容模式運行該軟件,問題沒有得到解決。後來想是和內存使用有關,我便抱着試試看的想法,進行了如下操作:

1.桌面→我的電腦→右擊選中“屬性”,見下圖2:

                圖2

2.執行步驟1,會打開如圖3所示頁面,見圖3:

               圖3

那麼,什麼是數據執行保護呢?見圖4

                      圖4

3.瞭解以上內容後,選擇“爲下列程序之外的所有程序啓用 DEP”,然後把圖1報錯信息中的程序“Navicat.exe”(在Windows的路徑)添加進來,見圖5

4.第3步驟執行完後,如圖6所示

               圖6

5.點擊圖6中的【應用】按鈕,系統要求重啓Windows操作系統,按系統提示重啓操作系統。

注:在重啓操作系統後,打開【查看】功能,內存訪問越界問題消失。但這並未從根本上解決問題,因爲【工具】、【窗口】兩功能按鈕依然存在。網上有帖子說:遇到內存越界問題,最好重新註冊下Windows的動態鏈接庫,首先“開始”—“cmd”,在打開的dos窗口中運行“for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1”。

果真,按照這個方法我對動態鏈接庫進行了重新註冊,等重新註冊後,再次重啓Navicat Premium客戶端,內存訪問越界徹底消失。

總結:水是有源的,樹是有根的,“navicat.exe”訪問內存越界也是有原因的,爲什麼重新註冊動態鏈接庫問題就會解決,關於這個問題有時間還是要研究下。 

補充:navicat運行一段時間後,也會間歇性出現訪問內存越界問題,再次對動態鏈接庫進行重新註冊,內存訪問越界問題消失。經過一段時間的觀察,發現內存訪問越界問題一直在反覆,原因很可能與動態鏈接庫的變化有關。持續觀察中……

經過一段時間的運行,發現將Navicat premium版本升級到10.1.7後,以上現象不再復發


轉自:http://hi.baidu.com/11haiou/item/529ba942fcdc1cb861d7b917

發佈了10 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章