REVISIÓN: Un comportamiento inesperado al ejecutar una aplicación de Visual Studio 2008 Service Pack 1 generado que llama a la función setjmp o longjmp en un archivo de código fuente

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

¿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!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×