Introducción
Este artículo describe un problema en el que unaexcepción n se produce cuando varios subprocesos llama a la función de tiempo de ejecución "atexit" C al mismo tiempo en Windows Embedded Compact 7. Hay una actualización disponible para resolver este problema. Antes de instalar esta actualización, deben instalar todas las actualizaciones publicadas previamente para este producto.
Síntomas
Cuando varios subprocesos llama a la función atexit de tiempo de ejecución de C a la vez en Windows Embedded Compact 7, puede producirse una excepción. La excepción se produce cuando no se serializa el código que llama a la función atexit o cuando el compilador inserta la función atexit .
Causa
El problema se produce porque la función atexit de tiempo de ejecución de C no es seguro para subprocesos. Por lo tanto, la tabla de memoria que utiliza la función está dañada.
Solución
Información de actualización de software
Una actualización de software compatible ahora está disponible de Microsoft como Windows Embedded Compact 7 actualización mensual (junio de 2017).
Nota: Esta actualización mensual para Windows Embedded Compact 7 está disponible para su descarga desde el siguiente sitio web del Centro de descarga de Microsoft:
Requisitos previos
Esta actualización es compatible solo si también se han instalado todas las actualizaciones publicadas previamente para este producto.
Requisito de reinicio
Después de aplicar esta actualización, debe realizar una compilación limpia de toda la plataforma. Para ello, utilice uno de los métodos siguientes:
-
En el menú Generar, haga clic en Limpiar solución y, a continuación, haga clic en Generar solución.
-
En el menú Generar, haga clic en Volver a generar solución.
No es necesario que reinicie el equipo después de aplicar esta actualización de software.
Información para sustituir la actualización
Esta actualización no sustituye a otras actualizaciones.
Información de archivo
Como se trata de una versión de onda completa. Casi todos los archivos binarios están afectados por esta versión.
Los siguientes archivos de origen se ven afectados por esta versión::
private\winceos\COREOS\core\corelibc\crtw32\startup\cexit.cpp
private\winceos\COREOS\core\corelibc\crtw32\startup\onexit.cMás información
En un entorno multiproceso, las tablas de la función de atexit pueden estar dañadas por otra llamada atexit debido a la seguridad para subprocesos no. Esto podría provocar daños en la memoria y excepciones. Para registrar una rutina que se ejecutará cuando el programa se cierra o descarga de un archivo .dll que se sirve la función atexit . El problema de seguridad de los subprocesos podría conducir a la alteración de esta rutina de salida y la corrupción de las tablas de la función de salida.
Referencias
Obtenga información acerca de la terminología que utiliza Microsoft para describir las actualizaciones de software.