Síntomas
Imagine la siguiente situación:
-
Habilitar la opción de optimización global (/og/Og) activando una de las siguientes opciones:
-
/O1
-
/O2
-
/Ox
-
-
Generar un archivo de código fuente de Microsoft Visual C++ con Microsoft Visual Studio 2008 Service Pack 1 (SP1).
-
El archivo de origen llama setjmp (función), la función longjmp o ambas funciones.
En este escenario, el compilador puede utilizar el mismo desplazamiento de la pila para almacenar las variables locales. Por lo tanto, puede producirse un comportamiento inesperado al ejecutar la aplicación generada.
Causa
Este problema se produce porque el optimizador no tiene en cuenta la función setjmp o longjmp . Esto hace que el optimizador calcular incorrectamente la duración de las variables locales. Cuando se cambia una variable, se puede cambiar inesperadamente otra variable.
Solución
Información de la revisión
Existe un hotfix disponible desde Microsoft. Sin embargo, esta revisión se diseñó para corregir el problema descrito en este artículo. Aplique esta revisión solamente a sistemas que experimenten el problema descripto en este artículo. Esta revisión podría ser sometida a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere a la próxima actualización de software que contenga este hotfix. Para resolver este problema inmediatamente, póngase en contacto con los servicios de soporte técnico de Microsoft para obtener la revisión. Para obtener una lista completa de los números de teléfono de servicio al cliente de Microsoft o para crear una solicitud de servicio independiente, visite el siguiente sitio Web de Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota En casos especiales, los costos derivados normalmente de las llamadas al soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft determina que una actualización específica resolverá el problema. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con la actualización en cuestión. Para descargar este hotfix desde la Galería de código de Microsoft Developer Network (MSDN), visite el siguiente sitio Web de Microsoft:
http://code.msdn.microsoft.com/KB2498381Nota MSDN Code Gallery muestra los idiomas para los que la revisión está disponible. Si no ve su idioma en la lista, es porque la página de recursos de galería de código no está disponible para ese idioma. O bien, puede descargar este hotfix desde el siguiente sitio Web de Microsoft Connect:
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=34826
Requisitos previos
Para aplicar este hotfix, debe tener Microsoft Visual Studio 2008 Service Pack 1 instalado.
Información de reinicio
No es necesario que reinicie el equipo después de instalar este hotfix si ha dejado de todas las instancias de Visual Studio.
Información de la sustitución de revisión
Esta revisión no sustituye a ninguna revisión publicada previamente.
Información sobre los archivos
La versión global de esta revisión instala archivos que tienen los atributos que se enumeran en las siguientes tablas. Las fechas y horas de estos archivos se muestran según la Hora universal coordinada (UTC). Las fechas y horas de estos archivos se muestran en el equipo local en horario local con la configuración actual del horario de verano (DST). Además, las fechas y horas pueden cambiar cuando realiza determinadas operaciones en los archivos.
Nombre de archivo |
Versión de archivo |
Tamaño de archivo |
Fecha |
Hora |
Plataforma |
---|---|---|---|---|---|
C2.dll |
15.0.30729.6147 |
2,283,840 |
25-Feb-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
2,362,688 |
25-Feb-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
2,493,248 |
25-Feb-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
3,018,048 |
25-Feb-2011 |
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 |
25-Feb-2011 |
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 |
Solución alternativa
Para evitar este problema, inicializar las variables locales antes de la función para que el compilador puede ser consciente de la duración de las variables.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Más información
Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft