【问题标题】:ASP.NET 2.0 System.AccessViolationException in Event Viewer事件查看器中的 ASP.NET 2.0 System.AccessViolationException
【发布时间】:2020-11-25 04:28:50
【问题描述】:

在 .NET 2.0 下编译的应用程序在其自己的应用程序池中在 IIS 下运行时崩溃并导致应用程序池停止。事件查看器提供以下详细信息:

Application ID: /xx/xxxx/1/ROOT/my_application_name_here
Process ID: 6600

Exception: System.AccessViolationException

Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

StackTrace:    at b(oa* , PBTransaction , Boolean )
   at c(oa* , PBTransaction )
   at Sybase.PowerBuilder.DB.PBSQL.Stop(IntPtr dbthis, PBTransaction transaction)
   at Sybase.PowerBuilder.PBSessionBase.StopTransaction(PBTransaction trans)
   at Sybase.PowerBuilder.PBTransaction.Dispose(Boolean disposing)
   at Sybase.PowerBuilder.PBPowerObject.Finalize()

有问题的应用程序是内置在 Power Builder 中的 ASMX Web 服务。 堆栈跟踪没有进一步。如果我在调试诊断分析器中捕获相同的错误,它会提供以下额外的内存详细信息:

这里的潜在错误可能是什么?有什么方法可以找到有关此问题的更多信息?

编辑:我已经禁用了快速故障保护,并且应用程序池在崩溃时不会停止。但是还是想追根究底

【问题讨论】:

  • 此类问题是由本机内存损坏引起的,因此转储分析通常是了解更多信息的唯一方法。如果您不熟悉必要的技能,请通过 support.microsoft.com 打开支持案例。调用堆栈似乎是 PowerBuilder 特定的,但对于本机问题,真正的罪魁祸首可能是别的东西。

标签: asp.net .net iis memory powerbuilder


【解决方案1】:

尝试将应用程序池管理的管道模式集成为经典,并确保它使用的是 .net 2.0 版。

【讨论】:

  • OP 还应检查应用程序池的启用 32 位应用程序设置,并确保设置正确。
【解决方案2】:
【解决方案3】:

在托管代码中不应发生此错误。这可能会解决问题:

转到 Visual Studio 调试器以绕过此异常:

Tools menu ->Options -> Debugging -> General -> Uncheck this option "Suppress JIT optimization on module load"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 2016-10-29
    • 1970-01-01
    相关资源
    最近更新 更多