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 :
http://support.microsoft.com/contactus/?ws=supportRemarque 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 fichier |
Version de fichier |
Taille du fichier |
Date |
Heure |
Plateforme |
---|---|---|---|---|---|
Atl90.dll |
9.0.30729.162 |
159,552 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90.dll |
9.0.30729.162 |
5,084,480 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90.dll |
9.0.30729.162 |
3,766,080 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90chs.dll |
9.0.30729.162 |
36,680 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90chs.dll |
9.0.30729.162 |
36,680 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90cht.dll |
9.0.30729.162 |
37,704 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90cht.dll |
9.0.30729.162 |
37,704 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90d.dll |
9.0.30729.162 |
7,419,200 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90d.dll |
9.0.30729.162 |
5,934,912 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90deu.dll |
9.0.30729.162 |
64,328 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90deu.dll |
9.0.30729.162 |
64,328 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90enu.dll |
9.0.30729.162 |
54,600 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90enu.dll |
9.0.30729.162 |
54,600 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90esn.dll |
9.0.30729.162 |
62,792 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90esn.dll |
9.0.30729.162 |
62,792 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90esp.dll |
9.0.30729.162 |
62,792 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90esp.dll |
9.0.30729.162 |
62,792 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90fra.dll |
9.0.30729.162 |
63,816 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90fra.dll |
9.0.30729.162 |
63,816 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90ita.dll |
9.0.30729.162 |
62,280 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90ita.dll |
9.0.30729.162 |
62,280 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90jpn.dll |
9.0.30729.162 |
44,360 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90jpn.dll |
9.0.30729.162 |
44,360 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90kor.dll |
9.0.30729.162 |
43,848 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90kor.dll |
9.0.30729.162 |
43,848 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90u.dll |
9.0.30729.162 |
5,103,424 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90u.dll |
9.0.30729.162 |
3,781,440 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90ud.dll |
9.0.30729.162 |
7,464,264 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90ud.dll |
9.0.30729.162 |
5,980,488 |
14-Oct-2008 |
02:32 |
x86 |
Mfcm90.dll |
9.0.30729.162 |
67,072 |
14-Oct-2008 |
00:50 |
x64 |
Mfcm90.dll |
9.0.30729.162 |
59,904 |
14-Oct-2008 |
00:20 |
x86 |
Mfcm90d.dll |
9.0.30729.162 |
93,184 |
14-Oct-2008 |
00:50 |
x64 |
Mfcm90d.dll |
9.0.30729.162 |
80,896 |
14-Oct-2008 |
00:20 |
x86 |
Mfcm90u.dll |
9.0.30729.162 |
67,072 |
14-Oct-2008 |
00:50 |
x64 |
Mfcm90u.dll |
9.0.30729.162 |
59,904 |
14-Oct-2008 |
00:20 |
x86 |
Mfcm90ud.dll |
9.0.30729.162 |
93,696 |
14-Oct-2008 |
00:50 |
x64 |
Mfcm90ud.dll |
9.0.30729.162 |
80,896 |
14-Oct-2008 |
00:20 |
x86 |
Mfcmifc80u.dll |
9.0.30729.162 |
14,152 |
20-Oct-2008 |
17:19 |
x86 |
Microsoft.visualc.stlclr.dll |
9.0.30729.162 |
49,000 |
20-Oct-2008 |
17:19 |
x86 |
Msvcm90.dll |
9.0.30729.162 |
225 280 |
13-Oct-2008 |
21:59 |
x86 |
Msvcm90.dll |
9.0.30729.162 |
324,096 |
13-Oct-2008 |
22:36 |
IA-64 |
Msvcm90.dll |
9.0.30729.162 |
245,760 |
13-Oct-2008 |
23:40 |
x64 |
Msvcm90d.dll |
9.0.30729.162 |
312,832 |
13-Oct-2008 |
21:59 |
x86 |
Msvcm90d.dll |
9.0.30729.162 |
429,568 |
13-Oct-2008 |
22:37 |
IA-64 |
Msvcm90d.dll |
9.0.30729.162 |
333,312 |
13-Oct-2008 |
23:40 |
x64 |
Msvcp90.dll |
9.0.30729.162 |
1,467,208 |
14-Oct-2008 |
00:56 |
IA-64 |
Msvcp90.dll |
9.0.30729.162 |
854,344 |
14-Oct-2008 |
01:12 |
x64 |
Msvcp90.dll |
9.0.30729.162 |
570,696 |
14-Oct-2008 |
02:32 |
x86 |
Msvcp90d.dll |
9.0.30729.162 |
2,514,760 |
14-Oct-2008 |
00:56 |
IA-64 |
Msvcp90d.dll |
9.0.30729.162 |
1,121,608 |
14-Oct-2008 |
01:12 |
x64 |
Msvcp90d.dll |
9.0.30729.162 |
873,288 |
14-Oct-2008 |
02:32 |
x86 |
Msvcr90.dll |
9.0.30729.162 |
1,504,584 |
14-Oct-2008 |
00:56 |
IA-64 |
Msvcr90.dll |
9.0.30729.162 |
624,456 |
14-Oct-2008 |
01:12 |
x64 |
Msvcr90.dll |
9.0.30729.162 |
653,640 |
14-Oct-2008 |
02:32 |
x86 |
Msvcr90d.dll |
9.0.30729.162 |
3,599,688 |
14-Oct-2008 |
00:56 |
IA-64 |
Msvcr90d.dll |
9.0.30729.162 |
1,349,960 |
14-Oct-2008 |
01:12 |
x64 |
Msvcr90d.dll |
9.0.30729.162 |
1,178,440 |
14-Oct-2008 |
02:32 |
x86 |
Vcomp90.dll |
9.0.30729.162 |
142,664 |
14-Oct-2008 |
00:56 |
IA-64 |
Vcomp90.dll |
9.0.30729.162 |
57,672 |
14-Oct-2008 |
01:12 |
x64 |
Vcomp90.dll |
9.0.30729.162 |
52,040 |
14-Oct-2008 |
02:32 |
x86 |
Vcomp90d.dll |
9.0.30729.162 |
317,256 |
14-Oct-2008 |
00:56 |
IA-64 |
Vcomp90d.dll |
9.0.30729.162 |
105,800 |
14-Oct-2008 |
01:12 |
x64 |
Vcomp90d.dll |
9.0.30729.162 |
89,416 |
14-Oct-2008 |
02:32 |
x86 |
Vcomp90ui.dll |
9.0.30729.162 |
11,592 |
20-Oct-2008 |
17:19 |
x86 |
Vcredist_ia64.exe |
9.0.30729.162 |
4,712,272 |
14-Oct-2008 |
19:32 |
x86 |
Vcredist_x64.exe |
9.0.30729.162 |
5,236,560 |
14-Oct-2008 |
19:36 |
x86 |
Vcredist_x86.exe |
9.0.30729.162 |
4,496,208 |
14-Oct-2008 |
19:28 |
x86 |
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