修复: 生成的 Visual Studio 2008 的 Service Pack 1 应用程序运行时出现意外的行为 setjmp 函数或调用 longjmp 函数在源文件中

症状

请考虑以下情况:

  • 启用全局优化选项 (/Og) 通过启用以下选项之一:

    • /O1

    • /O2

    • /Ox

  • 您可以通过使用 Microsoft Visual Studio 2008 Service Pack 1 (SP1) 构建 Microsoft Visual C++ 源文件。

  • 源代码文件调用setjmp函数、 longjmp函数或这两个函数。

在这种情况下,编译器可能会使用相同的堆栈偏移量存储不同的本地变量。 因此,当您运行生成的应用程序时,可能会出现意外的行为。

原因

因为优化器不考虑setjmp函数或longjmp函数,将出现此问题。 这会导致优化器不正确地计算本地变量的生存期。 更改一个变量时,可能会意外地更改另一个变量。

解决方案

修补程序信息

可以从 Microsoft 获得受支持的修复程序。 但是,此修补程序用于解决仅本文中描述的问题。 此修复程序仅适用于遇到本文中描述的问题的系统。 此修补程序可能会接受进一步的测试。 因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。要立即解决此问题,请联系 Microsoft 客户支持服务,以获取此修复程序。 有关 Microsoft 客户服务和支持电话号码的完整列表,或要创建单独的服务请求,请访问下面的 Microsoft 网站:

http://support.microsoft.com/contactus/?ws=support回答 5: 适用于 Windows Server 2016 和 Windows 10 版本 1709 的 Windows Server 容器映像的更新包含针对这组漏洞的缓解措施,不需要进行额外的配置。 在特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新能够解决您的问题,可能取消的通常情况下收取的电话支持服务费用。 照常收取支持费用将应用于其他支持问题和对于特定更新无法解决的问题。若要从 Microsoft 开发人员网络 (MSDN) 代码库中下载此修补程序,请访问下面的 Microsoft 网站:

http://code.msdn.microsoft.com/KB2498381回答 5: 适用于 Windows Server 2016 和 Windows 10 版本 1709 的 Windows Server 容器映像的更新包含针对这组漏洞的缓解措施,不需要进行额外的配置。 MSDN 代码库显示获取此修复程序的语言。 如果看不到列出的语言,这是因为代码库的资源页不可用这种语言。或者,您可以从以下 Microsoft 连接网站下载此修补程序:

https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=34826

先决条件

若要应用此修补程序,您必须具有 Microsoft Visual Studio 2008 Service Pack 1 安装。

重启信息

不需要重新启动计算机,如果您已经停止所有的 Visual Studio 实例安装此修补程序后。

修补程序替换信息

此修补程序不替代以前发布的修补程序。

文件信息

此修补程序的全球版本将安装具有下表所列属性的文件。 这些文件的日期和时间使用协调世界时 (UTC) 列出。 这些文件在本地计算机上显示的日期和时间是本地时间再加上当前夏令时 (DST) 偏差。 此外,如果对这些文件执行某些操作,日期和时间可能会更改。

文件名

文件版本

文件大小

日期

时间

平台

C2.dll

15.0.30729.6147

2,283,840

2011 年 2 月 25-

01:25

x86

C2.dll

15.0.30729.6147

2,362,688

2011 年 2 月 25-

01:25

x86

C2.dll

15.0.30729.6147

2,493,248

2011 年 2 月 25-

01:25

x86

C2.dll

15.0.30729.6147

3,018,048

2011 年 2 月 25-

01:25

x64

C2.dll

15.0.30729.6147

7,263,040

25-Feb-2011

01:25

IA-64

Link.exe

9.0.30729.6147

1,055,560

2011 年 2 月 25-

01:25

x64

Link.exe

9.0.30729.6147

2,135,368

25-Feb-2011

01:25

IA-64

Link.exe

9.0.30729.6147

800,584

25-Feb-2011

01:25

x86

解决方法

若要变通解决此问题,请初始化早期在函数中的局部变量以便编译器可以识别的变量的生存期。

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

更多信息

有关软件更新术语的更多信息,请单击下面的文章编号以查看 Microsoft 知识库中的相应文章:

824684 用于描述 Microsoft 软件更新的标准术语的说明

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?

哪些因素影响了你的体验?

是否还有其他反馈?(可选)

谢谢您的反馈意见!

×