PRB:64 位托管应用程序在 CLR 封送过程中失败并出现访问冲突

本文可帮助你解决 64 位托管应用程序在公共语言运行时 (CLR) 封送处理期间失败并发生访问冲突的问题。

原始产品版本:.NET Framework 3.5 Service Pack 1
原始 KB 编号: 2615130

症状

在 64 位 Microsoft Windows XP Service Pack (SP) 3 或 64 位 Windows Server 2003 SP2 上,你有一个 .NET 托管应用程序作为 64 位进程运行。 在 CLR 封送处理期间,应用程序可能会崩溃并发生访问冲突。 堆栈跟踪和失败函数类似于以下信息:

0:000> knL
# Child-SP RetAddr 调用站点
00 000000000042c900 0000064274ee8998 System_ni!DomainNeutralILStubClass.IL_STUB (System.Guid ByRef、IntPtr、Int32、IntPtr、Int32、IntPtr ByRef) +0xff
01 000000000042ca40 0000064274ee8c30 System_ni!System.Runtime.InteropServices.StandardOleMarshalObject.GetStdMarshaller (System.Guid ByRef、Int32、Int32) +0xe8
02 000000000042caf0 000006427f602322
System_ni!System.Runtime.InteropServices.StandardOleMarshalObject.Microsoft.Win32.UnsafeNativeMethods.IMarshal.MarshalInterface (System.Object、System.Guid ByRef、IntPtr、Int32、IntPtr、Int32) +0x6

...[截图]

原因

这是 64 位 CLR 封送处理中的一个已知 bug,它尝试写入到导致访问冲突的只读位置。

解决方案

若要解决此问题,请联系 Microsoft 客户支持服务以获取修补程序。 有关 Microsoft 客户支持服务电话号码的完整列表以及有关支持成本的信息,请访问 Microsoft 支持部门