应用对象
Windows Embedded Compact 7

简介

本文描述的问题的多个线程调用 C 运行时"atexit"函数同时在 Windows 嵌入式紧凑型 7 时发生 n 异常。更新程序可以解决此问题。在安装此更新之前,必须安装此产品以前发出的所有更新。

症状

当多个线程在同一时间在 Windows 嵌入式紧凑型 7 调用 C 运行时atexit函数时,可能会出现异常。当调用的atexit函数的代码,可以不序列化或由编译器插入的atexit函数发生异常。

原因

问题是由于 C 运行时atexit函数不是线程安全的。因此,此函数所使用的内存表已损坏。

解决方案

软件更新信息

作为 Windows 嵌入式紧凑型 7 月更新 (6 月 2017) 支持的软件更新现可从 Microsoft。

注意:此 Windows 嵌入式紧凑 7 月更新程序可从下面的 Microsoft 下载中心网站下载:

Windows 嵌入式紧凑型 7 更新

系统必备组件

仅当此产品的所有以前发布的更新都已安装时才支持此更新。

重启要求

应用此更新后,您必须执行干净对整个平台的构建。若要执行此操作,请使用以下方法之一︰

  • 生成菜单中,单击清理解决方案,,然后单击生成解决方案

  • 单击生成菜单上的重新生成解决方案

应用此软件更新后无需重新启动计算机。

更新替换信息

此更新不替代任何其他更新。

文件信息

因为这是一个全波版本。几乎所有二进制文件都受此版本。

下面的源代码文件不会影响此版本::

private\winceos\COREOS\core\corelibc\crtw32\startup\cexit.cpp private\winceos\COREOS\core\corelibc\crtw32\startup\onexit.c

更多信息

在多线程环境中, atexit函数表可能被另一个 atexit 调用损坏由于非线程安全。这可能会导致内存损坏和异常。Atexit函数用于注册程序退出或.dll 卸载时将执行的例程。在线程安全缺陷可能导致此退出例程的变更和退出函数表的损坏。

参考资料

了解 Microsoft 用于描述软件更新的术语

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。