Une application basée sur Win32 de Visual C++ 2010 peut se bloquer ou d’autres échecs de fonction peuvent se produire si le projet est compilé à l’aide de forme _fastcall et à l’aide d’une option d’optimisation du compilateur


Symptômes


Considérez le scénario suivant :
  • Vous créez un projet Microsoft Visual C++ 2010 Win32.
  • Vous utilisez le mot-clé de la forme _fastcall dans certaines fonctions du projet. Ou bien, vous définissez la propriété de la Convention d’appel pour le projet à la forme _fastcall.
  • Vous activez une des options du compilateur d’optimisation dans Microsoft Visual Studio 2010. Par exemple, vous activez la augmenter la vitesse (/ O2) option d’optimisation du compilateur.

    Remarque Lorsqu’une option d’optimisation du compilateur est activée, la fonctionnalité d’optimisation de valeur de retour (RVO) est activée dans Visual Studio 2010.
  • Vous compilez le projet, puis que vous exécutez l’application.
Dans ce scénario, l’application peut se bloquer, ou autre fonction risquent d’échouer.

Par exemple, l’application se bloque en raison d’une exception de violation d’accès.

Cause


Ce problème se produit car le code incorrect est généré lorsque l’application est compilée à l’aide de forme _fastcall si la fonction RVO est activée. Le code incorrect écrase la mémoire au hasard. Par conséquent, différents fonction risquent d’échouer.

Résolution


Informations sur le correctif

Un correctif pris en charge est désormais disponible auprès de Microsoft. Toutefois, il est conçu pour résoudre uniquement le problème décrit dans cet article. Il s’applique uniquement aux systèmes rencontrant ce problème spécifique. Ce correctif peut subir des tests supplémentaires. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre la prochaine mise à jour logicielle qui contiendra ce correctif.

Pour résoudre ce problème immédiatement, contactez les Services de Support technique Microsoft pour obtenir le correctif. Pour obtenir une liste complète des numéros de téléphone des Services de Support technique Microsoft et des informations sur les coûts de support, visitez le site Web de Microsoft à l’adresse suivante :Remarque Dans des cas particuliers, des frais généralement encourus pour les appels au support technique peuvent être annulés si un technicien du support technique Microsoft détermine qu'une mise à jour spécifique peut résoudre votre problème. Les coûts habituels du support technique s’appliqueront aux autres questions et problèmes qui ne relèvent pas de la mise à jour spécifique en question.



Conditions préalables

Pour appliquer ce correctif, vous devez disposer de Microsoft Visual Studio 2010.

Nécessite un redémarrage

Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir installé le correctif.

Informations de remplacement du correctif

Ce correctif ne remplace aucun autre correctif.

Informations sur les fichiers

La version anglaise de ce correctif dispose des attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont répertoriées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, elles sont converties en heure locale. Pour trouver la différence entre l’UTC et l’heure locale, utilisez l’onglet fuseau horaire dans l’élément de Date et heure dans le panneau de configuration.


Pour toutes les versions de Visual Studio 2010
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
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

État


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».