gpt4 book ai didi

c# - 如何调试 PerfMon.dll 中的 0xc0000409 错误?/组装绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 00:17:12 25 4
gpt4 key购买 nike

问题描述

我正在尝试在客户的服务器(Win 2012R2)上调试问题,我们的 .NET Web 应用程序之一托管在他们的 IIS(版本 8.5.9600.16384)中。
最近,我们的一位技术支持人员更改了应用程序的 Web.config 文件中的一个小内部设置,据他们说,系统没有进行任何其他更改或操作。该应用程序也没有更新,并且之前一直运行没有任何问题。

由于该更改,配置站点的 AppPool 无法再启动。根据系统事件日志,有几次尝试启动,每次都会导致工作进程崩溃,直到池的快速失败保护完全停止启动进程。

此外,由于我在客户的服务器上,因此我只有有限的调试选项。

发现

WAS 在系统事件日志中报告:

A process serving application pool '[our pool]' suffered a fatal communication error with the Windows Process Activation Service. The process id was '5664'. The data field contains the error number.

Application pool '[our pool]' is being automatically disabled due to a series of failures in the process(es) serving that application pool.



查看相应的应用程序错误日志会发现以下内容:

Faulting application name: w3wp.exe, version: 8.5.9600.16384, time stamp: 0x52157ba0 Faulting module name: PerfMon.dll, version: 8.0.10977.0, time stamp: 0x59cfb424 Exception code: 0xc0000409 Fault offset: 0x000f8c7b Faulting process id: 0x1620 Faulting application start time: 0x01d423ff75bef49f Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe Faulting module path: C:\Program Files\Microsoft Monitoring Agent\Agent\APMDOTNETAgent\V8.0.10918.0\PerfMon.dll Report Id: b56327b3-8ff2-11e8-80d5-005056a52299 Faulting package full name: Faulting package-relative application ID:



在搜索这个问题时,我主要关注 PerfMon.dll 问题和提供的错误代码 0xc0000409,这显然与注册表项损坏或堆栈缓冲区溢出有关,但在这两种情况下,我都无法弄清楚是什么原因可能是。

我还尝试了此处描述的故障转储分析
https://blogs.msdn.microsoft.com/parvez/2016/08/06/iis-application-pool-crash-and-debug-diag/

但最终它似乎只是回到原始问题的往返,因为这是在转储中发现的唯一错误:

The assembly instruction at PerfMon!DllGetClassObject+966fb in C:\Program Files\Microsoft Monitoring Agent\Agent\APMDOTNETAgent\V8.0.10918.0\PerfMon.dll from Microsoft Corp. has caused an unknown exception (0xc0000409) on thread 2



这基本上是我已经从事件日志中得到的。

我在这里的主要问题不仅是可能是什么原因和这个问题的潜在解决方案,而且首先是如何正确找到原因/解决方案。

更新

使用 Fusion Logs,我找到了 的三个绑定(bind)错误。 System.Web.DynamicData , System.Web.Extensions System.ServiceModel.web .

The operation failed. Bind result: hr = 0x80004005. Unspecified error

Assembly manager loaded from: >C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll Running under executable C:\Windows\SysWOW64\inetsrv\w3wp.exe --- A detailed error log follows.

=== Pre-bind state information === LOG: DisplayName = System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (Fully-specified) LOG: Appbase = [app root path] LOG: Initial PrivatePath = [app root bin directory] LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\bee9e73a LOG: Cache Base = C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\bee9e73a LOG: AppName = b83a4ee Calling assembly : (Unknown).

Rejecting code sharing because a dependent assembly did not match the conditional APTCA share mode



搜索这方面的任何信息,我只能找到一个与 MVC3/MVC4 相关的旧错误,这需要更改配置。不过,这与这个问题无关。
这也可能意味着原始错误与 PerfMon 完全无关,原始错误只是一个奇怪的副作用。

最佳答案

只是想补充一下,我们现在在 Windows Server 2012 上遇到了这个(或非常相似的)问题,并通过删除 Microsoft Monitoring Agent APM 服务来解决它,如这篇相当精彩的博客文章中所述:http://kevingreeneitblog.blogspot.com/2017/03/scom-2016-agent-crashing-legacy-iis.html

(博文中描述的问题据说只影响在较旧的 .NET 框架版本上运行的应用程序,但我们遇到了只运行版本 4 的应用程序池。)

从我们的事件日志中:

Faulting application name: w3wp.exe, version: 8.5.9600.16384, time stamp: 0x52157ba0
Faulting module name: PerfMon.dll, version: 8.0.11072.0, time stamp: 0x59c01c4c
Exception code: 0xc0000409
Fault offset: 0x000f8c7b
Faulting process id: 0x1ae8
Faulting application start time: 0x01d4eac448929ba3
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Program Files\Microsoft Monitoring Agent\Agent\APMDOTNETAgent\V8.0.11072.0\PerfMon.dll
Report Id: 8a700b62-56b7-11e9-8124-001dd8b71cba
Faulting package full name:

关于c# - 如何调试 PerfMon.dll 中的 0xc0000409 错误?/组装绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51517581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com