REVISIÓN: Excepción cuando varios subprocesos llama a la función de tiempo de ejecución "atexit" C al mismo tiempo en Windows Embedded Compact 7

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:

Actualizaciones de Windows Embedded Compact 7

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.c

Má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.

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

×