近期有生产项目反馈频繁出现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版本后问题解决。