zoukankan      html  css  js  c++  java
  • Oracle客户端bug导致“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

    近期有生产项目反馈频繁出现iis crash,但是Windows日志未记录crash相关的详细信息。因此借助procdump工具抓取crash时刻dump,再进行分析。

    (1)procdump抓取crash dump

    D:ToolsProcdump>procdump -ma -n 3 -e  w3wp.exe

    (2)Debug

    通过windbg debug异常信息,出现System.Reflection.TargetInvocationException,并提示Use !PrintException 000000fc5b27e6e0 to see more.

     按照提示命令继续查看详细异常信息,最终发现出现 System.AccessViolationException异常,且提示信息为“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

     通过_remoteStackTraceString进一步查看出现异常的堆栈信息,抛异常的方法为Oracle.DataAccess.Client.OpsSql.Prepare2(),可能与ODP驱动有关。

    进一步检查问题环境oracleClient版本,为11.2.0.1,建议项目升级OracleClient11.2.0.4版本后问题解决。

     _remoteStackTraceString说明

  • 相关阅读:
    反射&异常
    成员方法
    继承&多态
    面向对象
    常用模块
    软件目录结构规范
    内置函数
    生产器&迭代器
    装饰器
    函数
  • 原文地址:https://www.cnblogs.com/wang-xiaohui/p/14247638.html
Copyright © 2011-2022 走看看