【问题标题】:ASP.NET 2.0 C# Application crashes with Memory Access Violation on NTDLLASP.NET 2.0 C# 应用程序因 NTDLL 上的内存访问冲突而崩溃
【发布时间】:2017-01-24 17:26:27
【问题描述】:

我们有一系列 ASP.Net Web API 2.0 应用程序运行在一个通用服务器(Server 2012 和 IIS 8.5)上。每个应用程序都在自己的应用程序池中。堆栈是 .NET 4.5,RabbitMQ 驱动程序 3.6.6 和 MongoDB 驱动程序 1.11,postsharp express

最近,应用程序开始随机崩溃并出现访问冲突异常。

查看崩溃转储并没有提供特别有用的信息……至少对我来说没有。以下是导致崩溃的两个(一致的)原因:

In w3wp.exe.13880.dmp the assembly instruction at ntdll!RtlpxLookupFunctionTable+3b in C:\Windows\System32\ntdll.dll from Microsoft Corporation has caused an access violation exception (0xC0000005) when trying to write to memory location 0x06d00ff8 on thread 0

In w3wp.exe.1628.dmp the assembly instruction at ntdll!RtlAcquireSRWLockShared+b in C:\Windows\System32\ntdll.dll from Microsoft Corporation has caused an access violation exception (0xC0000005) when trying to write to memory location 0x611e0ff8 on thread 0

此外,所有转储似乎都开始了崩溃(和其他几个线程)的堆栈跟踪:

kernel32!ExitProcessImplementation+a 
mscoreei!RuntimeDesc::ShutdownAllActiveRuntimes+27b 
msvcrt!_crtCorExitProcess+59 
msvcrt!_crtExitProcess+d 
msvcrt!doexit+15b 
w3wp!ParseCommandLine+bec 
kernel32!BaseThreadInitThunk+22 
ntdll!RtlUserThreadStart+34 

任何想法如何更有效地调试?我尝试了不同的内存转储、日志记录和从转储调试托管内存的方法......但到目前为止没有成功。任何指针将不胜感激。

【问题讨论】:

    标签: c# rabbitmq asp.net-web-api2 mongodb-.net-driver iis-8.5


    【解决方案1】:

    以防万一这对其他人有帮助...这个特殊问题是由于 SuatinSoft PdfFocus 上缺乏线程安全性造成的,该程序使用 GDI 中的非托管代码将 PDF 页面转换为图像。当两个线程同时访问该代码时,会导致内存访问冲突

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多