FIX: 当运行基于.net Framework 2.0 的应用程序时,System.AccessViolationException 异常发生,或应用程序域中的两个线程上发生死锁

文章翻译 文章翻译
文章编号: 975954 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

在 Microsoft.net Framework 2.0 中,就会运行应用程序时遇到以下问题之一。

问题 1

发生数据损坏,或者收到 System.AccessViolationException 异常。如果您收到异常,还会收到以下错误消息:
试图读取或写入受保护的内存。这通常是指示其他内存已损坏。
当满足下列所有条件都都为真时,会发生此问题:
  • 在多个域之间共享程序集。
  • 轻型代码 Gen (LCG) 方法连接到共享程序集内的类型。
  • LCG 方法是在多个域中收集的。然后,由在实时 (JIT) 编译器编译该程序集中的代码。
  • JIT 代码和 LCG 方法将执行一个接口调用。

问题 2

您在具有高内存使用情况的计算机上运行应用程序时应用程序停止响应。如果您使用 Windbg.exe 工具来调试该问题,就会发现死锁发生在一个应用程序域中的两个线程上。

原因

问题 1 的原因

出现数据损坏的原因是公共语言运行库 (CLR) 存根函数在提交的内存中之后不再应用程序域被回收。动态地生成函数。

问题 2 的原因

应用程序停止响应,因为有一个线程获取锁执行 m_prCachedMethodPermissionsLock 的功能。 然后,该线程被挂起参与垃圾回收并不释放该锁。然而,在合作的模式下,在同一个应用程序域中的另一个线程将继续等待锁。

解决方案

修复程序信息

可以从 Microsoft 获得支持的修补程序。但是,此修补程序被用于解决本文所述的此问题。此修补程序仅应用于出现本文所述问题的系统。此修补程序可能会接受进一步的测试。因此,如果此问题没有对您造成严重的影响,我们建议您等待包含此修补程序的下一个软件更新。要从 Microsoft 开发人员网络 (MSDN) 代码库中下载此修补程序,请访问下面的 Microsoft 网站:
http://code.msdn.microsoft.com/KB975954
注意MSDN 代码库显示在此修补程序是可用的语言。如果您看不到您列出的语言,它是因为代码库的资源页不可用该语言的。

或者,您可以从下面的 Microsoft 连接的 Web 站点下载此修复程序汇总:
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=26146

系统必备组件

您必须具有.net Framework 2.0 Service Pack 2 (SP2) 或.net Framework 3.5 Service Pack (SP1) 要应用此修补程序安装。

重新启动要求

您不必在应用此修补程序,如果正在使用的.net 框架没有实例后,重新启动计算机。

修补程序替换信息

此修补程序不替代其他修补程序。

文件信息

此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。 日期和时间对这些文件列出在协调世界时 (UTC)。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的 日期和时间 项中的 时区 选项卡。
支持所有基于 x86 的版本的 Windows Vista SP2 和 Windows Server 2008 SP2 x
收起该表格展开该表格
文件的名称文件版本文件大小日期时间
Mscorlib.dll2.0.50727.44084,550,6562009 年十月 21 日07: 24
Mscordacwks.dll2.0.50727.4408989,0002009 年十月 21 日07: 24
Mscorwks.dll2.0.50727.44085,818,6882009 年十月 21 日07: 24
Sos.dll2.0.50727.4408388,9202009 年十月 21 日07: 24
所有支持基于 x64 的版本的 Windows Vista SP2 和 Windows Server 2008 SP2 x
收起该表格展开该表格
文件的名称文件版本文件大小日期时间
Mscorlib.dll2.0.50727.44084,567,0402009 年十月 21 日07: 24
Mscordacwks.dll2.0.50727.44081,758,5362009 年十月 21 日07: 24
Mscorwks.dll2.0.50727.440810,061,1202009 年十月 21 日07: 24
Sos.dll2.0.50727.4408485,1762009 年十月 21 日07: 24
所有受支持的基于 Itanium 的版本,Windows Server 2008 SP2 的
收起该表格展开该表格
文件的名称文件版本文件大小日期时间
Mscorlib.dll2.0.50727.44084,009,9842009 年十月 21 日07: 26
Mscordacwks.dll2.0.50727.44083,085,1282009 年十月 21 日07: 26
Mscorwks.dll2.0.50727.440820,173,1202009 年十月 21 日07: 26
Sos.dll2.0.50727.4408872,7602009 年十月 21 日07: 27
支持所有基于 x86 的 Windows 7.0 版本 x
收起该表格展开该表格
文件的名称文件版本文件大小日期时间
Mscorlib.dll2.0.50727.49344,550,6562009 年十一月 3 日23: 27
Mscordacwks.dll2.0.50727.4934995,1602009 年十一月 3 日23: 27
Mscorwks.dll2.0.50727.49345,816,6562009 年十一月 3 日23: 27
Sos.dll2.0.50727.4934388,9362009 年十一月 3 日23: 28
支持所有 x 基于 x64 的版本的 Windows 7.0 和 Windows Server 2008 R2
收起该表格展开该表格
文件的名称文件版本文件大小日期时间
Mscorlib.dll2.0.50727.49344,567,0402009 年十一月 3 日23: 33
Mscordacwks.dll2.0.50727.49341,764,1682009 年十一月 3 日23: 33
Mscorwks.dll2.0.50727.493410,058,5602009 年十一月 3 日23: 33
Sos.dll2.0.50727.4934485,1922009 年十一月 3 日23: 34
所有受支持的基于 Itanium 的版本的 Windows Server 2008 R2
收起该表格展开该表格
文件的名称文件版本文件大小日期时间
Mscorlib.dll2.0.50727.49344,009,9842009 年十一月 3 日23: 32
Mscordacwks.dll2.0.50727.49343,085,6402009 年十一月 3 日23: 32
Mscorwks.dll2.0.50727.493420,164,9442009 年十一月 3 日23: 32
Sos.dll2.0.50727.4934872,7602009 年十一月 3 日23: 32
支持所有基于 x86 版本的 Windows XP、 Windows Server 2000,和 Windows Server 2003 的 x
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台
Mscordacwks.dll2.0.50727.4408989,0002009 年九月 30 日05: 12x86
Mscorlib.dll2.0.50727.44084,550,6562009 年九月 30 日05: 12x86
Mscorwks.dll2.0.50727.44085,818,6882009 年九月 30 日05: 12x86
Sos.dll2.0.50727.4408388,9202009 年九月 30 日05: 12x86

所有支持基于 x64 的版本的 Windows XP、 Windows Server 2000,和 Windows Server 2003 的 x
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台
Mscordacwks.dll2.0.50727.44081,758,5362009 年九月 29 日23: 57x64
Mscorlib.dll2.0.50727.44084,567,0402009 年九月 29 日23: 51x64
Mscorwks.dll2.0.50727.440810,061,1202009 年九月 29 日23: 55x64
Sos.dll2.0.50727.4408485,1762009 年九月 29 日23: 52x64

所有受支持的基于 Itanium 的版本,Windows XP 的、 Windows Server 2000,和 Windows Server 2003 的
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台
Mscordacwks.dll2.0.50727.44083,085,1282009 年九月 30 日01: 05IA 64
Mscorlib.dll2.0.50727.44084,009,9842009 年九月 30 日01: 03IA 64
Mscorwks.dll2.0.50727.440820,173,1202009 年九月 30 日00: 58IA 64
Sos.dll2.0.50727.4408872,7602009 年九月 30 日01: 02IA 64

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

属性

文章编号: 975954 - 最后修改: 2010年2月14日 - 修订: 2.2
这篇文章中的信息适用于:
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 3.5 Service Pack 1
  • Microsoft .NET Framework 2.0
关键字:?
kbmt kbexpertiseadvanced kbsurveynew kbqfe kbhotfixserver KB975954 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 975954
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com