Una aplicación basada en Win32 de Visual C++ 2010 puede bloquearse o pueden producirse otros errores de función si el proyecto se compila utilizando _fastcall y mediante una opción de compilador de optimización


Síntomas


Imagine el siguiente escenario:
  • Crear un proyecto basado en Win32 de Microsoft Visual C++ 2010.
  • Utilice la palabra clave _fastcall en algunas funciones del proyecto. O bien, establezca la propiedad de La convención de llamada para el proyecto a _fastcall.
  • Habilitar una de las opciones del compilador de optimización en Microsoft Visual Studio 2010. Por ejemplo, habilitar la Maximizar velocidad (/ O2) opción de compilador de optimización.

    Nota: Cuando se habilita una opción de compilador de optimización, está habilitada la característica de optimización de valor de retorno (RVO) en Visual Studio 2010.
  • Compile el proyecto y, a continuación, se ejecuta la aplicación.
En este escenario, la aplicación puede bloquearse o pueden aparecer otros errores de función.

Por ejemplo, la aplicación se bloquea debido a una excepción de infracción de acceso.

Causa


Este problema se produce porque se ha generado código incorrecto al compila la aplicación utilizando _fastcall si está habilitada la característica RVO. El código incorrecto sobrescribe memoria aleatoriamente. Por lo tanto, pueden producirse varios errores de función.

Solución


Información de la revisión

Ahora hay una revisión compatible de Microsoft. Sin embargo, se pretende corregir el problema que se describe en este artículo. Aplíquela sólo a sistemas que experimenten este problema específico. Esta revisión puede 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 números de teléfono de los servicios de soporte al cliente de Microsoft e información acerca de los costos de soporte técnico, visite el siguiente sitio Web de Microsoft:Nota: 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.



Requisitos previos

Para aplicar este hotfix, debe tener instalado Microsoft Visual Studio 2010.

Requisito de reinicio

No es necesario que reinicie el equipo después de instalar la revisión.

Información de reemplazo de revisión

Este hotfix no sustituye a otras.

Información de archivo

La versión en inglés de esta revisión tiene los atributos de archivo (o atributos del archivo más reciente) mostrados en la tabla siguiente. Las fechas y horas de estos archivos se muestran en la hora Universal coordinada (UTC). Al ver la información del archivo, se convierte en hora local. Para encontrar la diferencia entre la hora UTC y la hora local, utilice la ficha Zona horaria en el elemento de Fecha y hora del Panel de control.


Para todas las versiones compatibles de Visual Studio 2010
Nombre del archivoVersión del archivoTamaño de archivoFechaHoraPlataforma
C2.dll16.0.30319.3792,508,60825-Oct-201008:42x86
C2.dll16.0.30319.3792,588,99225-Oct-201008:42x86
C2.dll16.0.30319.3792,629,44025-Oct-201008:42x86
C2.dll16.0.30319.3792,975,55225-Oct-201008:42x64
C2.dll16.0.30319.3797,351,61625-Oct-201008:42IA-64

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".