CORRECTIF : Message d’erreur lorsque vous exécutez une application qui est configuré pour être généré pour la x64 la plate-forme en utilisant le fichier MSVCR90.dll qui appelle la fonction strncpy : « une exception win32 non gérée s’est produite dans 'nom de l’application' »


Symptômes


Vous avez une application qui est configurée pour être générée pour une plate-forme x 64, en utilisant le fichier Msvcr90.dll. L’application appelle la fonction strncpy . Lorsque vous exécutez l’application, le message d’erreur suivant peut s’afficher dans la fenêtre du débogueur Just Visual Studio :
Une exception win32 non gérée s'est produite dans «nom de l'application»
Lorsque vous vérifiez la pile des appels, vous pouvez trouver une violation d’accès a été déclenchée dans le fichier Msvcr90.dll et que l’application a cessé de répondre dans la fonction strncpy . Ce problème se produit lorsque les conditions suivantes sont remplies :
  • La mémoire tampon source s’étend jusqu'à la fin d’une page allouée.
  • L’octet suivant après cette page n’appartient pas au processus en cours d’exécution.
  • La longueur doit être copié est un multiple de 8.
  • La longueur doit être copié inclut le dernier octet de la mémoire tampon source.

Cause


Ce problème se produit car la fonction strncpy essaie d’accéder à l’octet suivant après la mémoire tampon source. Ce problème est introduit par les nouvelles méthodes d’optimisation pour certaines fonctions de la bibliothèque CRT.

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 le prochain service pack de Visual Studio 2008 qui comprendra 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

Vous devez disposer de Visual Studio 2008 Service Pack 1 pour appliquer ce correctif.

Nécessite un redémarrage

Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir appliqué ce 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.
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Atl90.dll9.0.30729.162159,55214-Oct-200802:32x86
Mfc90.dll9.0.30729.1625,084,48014-Oct-200801:12x64
Mfc90.dll9.0.30729.1623,766,08014-Oct-200802:32x86
Mfc90chs.dll9.0.30729.16236,68014-Oct-200801:12x64
Mfc90chs.dll9.0.30729.16236,68014-Oct-200802:32x86
Mfc90cht.dll9.0.30729.16237,70414-Oct-200801:12x64
Mfc90cht.dll9.0.30729.16237,70414-Oct-200802:32x86
Mfc90d.dll9.0.30729.1627,419,20014-Oct-200801:12x64
Mfc90d.dll9.0.30729.1625,934,91214-Oct-200802:32x86
Mfc90deu.dll9.0.30729.16264,32814-Oct-200801:12x64
Mfc90deu.dll9.0.30729.16264,32814-Oct-200802:32x86
Mfc90enu.dll9.0.30729.16254,60014-Oct-200801:12x64
Mfc90enu.dll9.0.30729.16254,60014-Oct-200802:32x86
Mfc90esn.dll9.0.30729.16262,79214-Oct-200801:12x64
Mfc90esn.dll9.0.30729.16262,79214-Oct-200802:32x86
Mfc90esp.dll9.0.30729.16262,79214-Oct-200801:12x64
Mfc90esp.dll9.0.30729.16262,79214-Oct-200802:32x86
Mfc90fra.dll9.0.30729.16263,81614-Oct-200801:12x64
Mfc90fra.dll9.0.30729.16263,81614-Oct-200802:32x86
Mfc90ita.dll9.0.30729.16262,28014-Oct-200801:12x64
Mfc90ita.dll9.0.30729.16262,28014-Oct-200802:32x86
Mfc90jpn.dll9.0.30729.16244,36014-Oct-200801:12x64
Mfc90jpn.dll9.0.30729.16244,36014-Oct-200802:32x86
Mfc90kor.dll9.0.30729.16243,84814-Oct-200801:12x64
Mfc90kor.dll9.0.30729.16243,84814-Oct-200802:32x86
Mfc90u.dll9.0.30729.1625,103,42414-Oct-200801:12x64
Mfc90u.dll9.0.30729.1623,781,44014-Oct-200802:32x86
Mfc90ud.dll9.0.30729.1627,464,26414-Oct-200801:12x64
Mfc90ud.dll9.0.30729.1625,980,48814-Oct-200802:32x86
Mfcm90.dll9.0.30729.16267,07214-Oct-200800:50x64
Mfcm90.dll9.0.30729.16259,90414-Oct-200800:20x86
Mfcm90d.dll9.0.30729.16293,18414-Oct-200800:50x64
Mfcm90d.dll9.0.30729.16280,89614-Oct-200800:20x86
Mfcm90u.dll9.0.30729.16267,07214-Oct-200800:50x64
Mfcm90u.dll9.0.30729.16259,90414-Oct-200800:20x86
Mfcm90ud.dll9.0.30729.16293,69614-Oct-200800:50x64
Mfcm90ud.dll9.0.30729.16280,89614-Oct-200800:20x86
Mfcmifc80u.dll9.0.30729.16214,15220-Oct-200817:19x86
Microsoft.visualc.stlclr.dll9.0.30729.16249,00020-Oct-200817:19x86
Msvcm90.dll9.0.30729.162225 28013-Oct-200821:59x86
Msvcm90.dll9.0.30729.162324,09613-Oct-200822:36IA-64
Msvcm90.dll9.0.30729.162245,76013-Oct-200823:40x64
Msvcm90d.dll9.0.30729.162312,83213-Oct-200821:59x86
Msvcm90d.dll9.0.30729.162429,56813-Oct-200822:37IA-64
Msvcm90d.dll9.0.30729.162333,31213-Oct-200823:40x64
Msvcp90.dll9.0.30729.1621,467,20814-Oct-200800:56IA-64
Msvcp90.dll9.0.30729.162854,34414-Oct-200801:12x64
Msvcp90.dll9.0.30729.162570,69614-Oct-200802:32x86
Msvcp90d.dll9.0.30729.1622,514,76014-Oct-200800:56IA-64
Msvcp90d.dll9.0.30729.1621,121,60814-Oct-200801:12x64
Msvcp90d.dll9.0.30729.162873,28814-Oct-200802:32x86
Msvcr90.dll9.0.30729.1621,504,58414-Oct-200800:56IA-64
Msvcr90.dll9.0.30729.162624,45614-Oct-200801:12x64
Msvcr90.dll9.0.30729.162653,64014-Oct-200802:32x86
Msvcr90d.dll9.0.30729.1623,599,68814-Oct-200800:56IA-64
Msvcr90d.dll9.0.30729.1621,349,96014-Oct-200801:12x64
Msvcr90d.dll9.0.30729.1621,178,44014-Oct-200802:32x86
Vcomp90.dll9.0.30729.162142,66414-Oct-200800:56IA-64
Vcomp90.dll9.0.30729.16257,67214-Oct-200801:12x64
Vcomp90.dll9.0.30729.16252,04014-Oct-200802:32x86
Vcomp90d.dll9.0.30729.162317,25614-Oct-200800:56IA-64
Vcomp90d.dll9.0.30729.162105,80014-Oct-200801:12x64
Vcomp90d.dll9.0.30729.16289,41614-Oct-200802:32x86
Vcomp90ui.dll9.0.30729.16211,59220-Oct-200817:19x86
Vcredist_ia64.exe9.0.30729.1624,712,27214-Oct-200819:32x86
Vcredist_x64.exe9.0.30729.1625,236,56014-Oct-200819:36x86
Vcredist_x86.exe9.0.30729.1624,496,20814-Oct-200819:28x86

Solution de contournement


Pour contourner ce problème, appliquez l’une des méthodes suivantes :
  • Modifier les quatre conditions qui sont décrites dans la section « Symptômes ».
  • Remplacez la fonction strncpy avec d’autres fonctions qui ont des fonctionnalités similaires, telles que la fonction memcpyou lstrcpyn .

    Remarque Ces fonctions de copie sont légèrement différentes. Par exemple, la fonction memcpy ne termine pas la copie de la chaîne lorsqu’un octet null est rencontré avant la longueur indiquée.

État


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

Plus d'informations


Pour plus d'informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
Description 824684 terminologie standard utilisée pour décrire les mises à jour logicielles de Microsoft