当P9“时,这意味着什么;“桶”;在.NET崩溃报告中,是否包含胡言乱语而不是导致崩溃的异常的名称?

当P9“时,这意味着什么;“桶”;在.NET崩溃报告中,是否包含胡言乱语而不是导致崩溃的异常的名称?,.net,exception,.net-2.0,clr,event-log,.net,Exception,.net 2.0,Clr,Event Log,今天,我们有一位客户在下载并安装了新版本的产品后,遇到了Windows服务的问题,该服务是我们产品的一部分 他们正在Windows Server 2003 R2(service Pack 2)计算机上运行该服务,该计算机上安装了.NET 2.0(这是该服务器上的.NET Framework的最新版本) 在他们安装产品更新并重新启动服务后,该服务几乎立即崩溃,Windows事件日志中记录了以下错误信息: Event Type: Error Event Source: .NET Runtime

今天,我们有一位客户在下载并安装了新版本的产品后,遇到了Windows服务的问题,该服务是我们产品的一部分

他们正在Windows Server 2003 R2(service Pack 2)计算机上运行该服务,该计算机上安装了.NET 2.0(这是该服务器上的.NET Framework的最新版本)

在他们安装产品更新并重新启动服务后,该服务几乎立即崩溃,Windows事件日志中记录了以下错误信息:

Event Type: Error Event Source: .NET Runtime 2.0 Error Reporting Event Category: None Event ID: 5000 Date: 8/13/2012 Time: 11:46:23 AM User: N/A Computer: Description: EventType clr20r3, P1 our-service-name-redacted.exe, P2 2.6.31.0, P3 4fcd090b, P4 mscorlib, P5 2.0.0.0, P6 4889dc80, P7 e38, P8 1e8, P9 pszqoadhx1u5zahbhohghldgiy4qixhx, P10 NIL. 事件类型:错误 事件源:.NET运行时2.0错误报告 活动类别:无 活动编号:5000 日期:2012年8月13日 时间:上午11:46:23 用户:不适用 计算机: 说明: 事件类型clr20r3、P1 our-service-name-redacted.exe、P2 2.6.31.0、P3 4fcd090b、P4 mscorlib、P5 2.0.0.0、P6 4889dc80、P7 e38、P8 1e8、P9 PSZQOADHX1U5ZAHBHOHLDGIY4QIXHX、P10 NIL。 现在,其他一些客户在运行相同版本的Windows服务时没有出现任何问题(在不同版本的Windows上),我在运行Windows Server 2003 R2(service Pack 2)的虚拟机上测试了该服务,但没有遇到此问题,但这一问题始终发生在这个客户身上

所以,这不是一个“我的代码怎么了?”问题:我更感兴趣的是关于这个错误信息的两件事,我觉得奇怪:

  • 故障模块(P4)为mscorlib
  • 据我所知,P9通常用来命名发生的异常,它包含看起来像垃圾数据(或者可能是某种模糊信息?)
对此有一般性的解释吗?我尝试过谷歌搜索,但运气不太好,因为很难搜索“P9垃圾”和类似的东西,也很难找到有用的东西。特别是,我真的很好奇P9的“胡言乱语”值能表明什么。例如,这可能暗示他们的.NET安装已损坏,或者这句“胡言乱语”实际上意味着什么

另外,我有点惊讶,故障模块是mscorlib,而不是我们自己的程序集,这让我再次怀疑客户的.NET安装是否损坏,或者他们的服务器上是否潜伏着病毒或其他恶意软件


那么,如前所述,对于这个相当奇怪的错误报告和P9“胡言乱语”,或者除了尝试在WinDbg中获得崩溃转储和调试之外,我应该尝试的任何特定故障排除步骤,是否有任何常见的解释?

如果异常信息太长而无法放入该字段,则P9中的异常信息将被散列(我不确定字段的长度,但显然它们是有限的)

然而,除非你运气不好,否则很可能很多人在过去都遇到过哈希代码——因此你可以根据哈希进行搜索,你可能会找到已经知道它实际上是什么类型的异常的人。在这种情况下,它似乎是一个错误


最后,所有模块信息都告诉您异常的起源。您调用以抛出异常的代码并不罕见,而且这将是一个不寻常的.NET程序,它没有太多调用mscorlib。当我们(现在)看到知道这是COM异常。

根据“解码clr20r3”的第二个链接,如果P9中的异常信息太长,则会对其进行哈希处理。基于此特定值进行搜索似乎表明它可能与Oh有关,最后,模块信息告诉您的是异常消息的来源。除非您正在进行一些非常不寻常的编程,否则我会认为您的code相当频繁地调用mscorlib——那么为什么它内部会出现异常呢?@Damien_The_异教徒:已经很晚了,我的Google fu显然很糟糕;-)。谢谢你的快速回复。至于mscorlib:很好。我想我只是希望在那里看到不同的程序集名称,因为我假设异常发生在服务的一个程序集中,只是没有被捕获。按照对相关问题()的回答中的建议,异常发生在mscorlib中名为InvokeMember的方法中,而且此服务确实会进行COM互操作调用,因此根本原因是COMException实际上不会让我感到惊讶。有趣的是,我无法在运行客户正在使用的相同版本的Windows Server 2003的虚拟机中重现此问题,并且当他们在不同的服务器上安装我们的产品时,此问题不会发生(运行Windows 2008 R2)。因此,这似乎是由.NET安装中断引起的,但不清楚是如何发生的。客户确实(在后续对话中)说他们遇到了“问题”一般来说,在该计算机上安装/更新.NET,但他们无法提供问题的具体细节。更奇怪的是,安装在Windows Server 2003计算机上的以前版本的产品工作正常。它是一个较旧的版本,并且在该版本和该版本之间发生了许多重构客户更新到,但旧版本也进行了COM调用,因为这是该产品的主要用途。所以,总而言之,这很奇怪。