1. 程式人生 > 資料庫 >Oracle客戶端bug導致“嘗試讀取或寫入受保護的記憶體。這通常指示其他記憶體已損壞。”

Oracle客戶端bug導致“嘗試讀取或寫入受保護的記憶體。這通常指示其他記憶體已損壞。”

近期有生產專案反饋頻繁出現iis crash,但是Windows日誌未記錄crash相關的詳細資訊。因此藉助procdump工具抓取crash時刻dump,再進行分析。

(1)procdump抓取crash dump

D:\Tools\Procdump>procdump -ma -n 3 -e  w3wp.exe

(2)Debug

通過windbg debug異常資訊,出現System.Reflection.TargetInvocationException,並提示Use !PrintException 000000fc5b27e6e0 to see more.

 

 按照提示命令繼續檢視,詳細異常資訊,最終發現出現 System.AccessViolationException異常,且提示資訊為“嘗試讀取或寫入受保護的記憶體。這通常指示其他記憶體已損壞。”

 

 進一步查看出現異常的堆疊資訊,拋異常的方法為Oracle.DataAccess.Client.OpsSql.Prepare2(),可能與ODP驅動有關。

 

 

進一步檢查問題環境oracleClient版本,為11.2.0.1,建議專案升級OracleClient11.2.0.4版本後問題解決。