5 votes

Comment réparer le crash du mode multijoueur de Call of Duty 4: Modern Warfare au démarrage?

J'ai installé Call of Duty 4: Modern Warfare sur ma machine Windows. Le mode solo fonctionne parfaitement, mais lorsque j'essaie de lancer COD4 en multijoueur, il plante au démarrage. Windows affiche alors le message d'erreur suivant :

iw3mp.exe a cessé de fonctionner.

Que puis-je faire pour résoudre ce problème ?


Avertissement : J'ai créé ce fil de discussion pour rassembler les différentes solutions à ce problème qui sont dispersées sur internet. Veuillez ajouter une réponse si vous avez une solution alternative ! Toutes les solutions postées ci-dessous ont apparemment résolu le problème pour de nombreuses personnes, mais pas pour moi - donc je suis toujours à la recherche d'une solution pour jouer à CoD4 sur mon nouveau PC gaming.

8voto

GLAF Points 234

C'est un problème très courant dû à une programmation négligente de la part d'Activision. Il est lié au périphérique audio du système, par exemple un problème avec vos pilotes de carte son, surtout s'il s'agit d'une carte son intégrée Realtek ou Sigmatel.

Voici quelques choses que vous pouvez essayer :

Activer Stereo Mix

  1. Cliquez avec le bouton droit sur l'icône de volume/haut-parleur dans votre zone de notification, et sélectionnez Périphériques d'enregistrement. (Si vous n'avez pas l'icône dans votre zone de notification, ouvrez Panneau de configuration Matériel et audio Son Enregistrement.)
  2. Cliquez avec le bouton droit et sélectionnez Afficher les périphériques désactivés. Le périphérique Stereo Mix apparaît.
  3. Activez le périphérique Stereo Mix.
  4. Démarrer le jeu.

Si cela ne résout pas le problème, essayez la suggestion suivante.

Utiliser un micro et des écouteurs

  1. Branchez un microphone dans la prise microphone.
  2. Branchez des écouteurs dans la prise casque.
  3. Cliquez avec le bouton droit sur l'icône de volume/haut-parleur dans votre zone de notification, et sélectionnez Périphériques d'enregistrement. (Si vous n'avez pas l'icône dans votre zone de notification, ouvrez Panneau de configuration Matériel et audio Son Enregistrement.)
  4. Définissez Microphone comme périphérique d'entrée par défaut.
  5. Basculez vers l'onglet Lecture.
  6. Définissez Écouteurs comme périphérique de lecture audio par défaut.
  7. Démarrer le jeu.

Si cela ne résout pas le problème, essayez la suggestion suivante.

Realtek : Désactiver la détection de prise frontale

Si vous avez une carte son intégrée Realtek, ceci pourrait aider :

  1. Double-cliquez sur l'icône orange de volume/haut-parleur dans votre barre des tâches. Cela ouvre le Gestionnaire audio HD.
  2. Cliquez sur l'icône de dossier dans le coin supérieur droit.
  3. Cochez Désactiver la détection de prise frontale. Cela force le pilote à charger le support du microphone même sans microphone branché. Fermez la fenêtre du haut.
  4. Si vous utilisez la sortie numérique, assurez-vous que le périphérique Sortie numérique est défini comme périphérique par défaut. Pour ce faire, cliquez sur Sortie numérique dans la barre supérieure et sur Définir comme périphérique par défaut à côté du réglage du volume.
  5. Démarrer le jeu.

Si cela ne résout pas le problème, essayez la suggestion suivante.

Sigmatel : installer les mises à jour

Si vous avez une carte son intégrée Sigmatel, installez toutes les mises à jour Windows et les derniers pilotes Sigmatel depuis http://www.dell.com/.

Supprimer le fichier mssmp3.asi

  1. Allez dans le dossier d'installation de CoD4.
  2. Entrez dans le dossier miles.
  3. Renommez le fichier mssmp3.asi en mssmp3.asi.bak.
  4. Démarrer le jeu.

Si cela ne résout pas le problème, essayez la suggestion suivante.

Mettre à jour PunkBuster

Assurez-vous que PunkBuster est mis à jour à la dernière version.

Installer les correctifs de Call of Duty 4

Installez tous les correctifs jusqu'à au moins la version 1.5. (Actuellement, le correctif le plus récent disponible est la version 1.7.)

Si cela ne résout pas le problème, essayez la suggestion suivante.

Réinstaller les pilotes de carte son

Avant de continuer, veuillez prendre note de la marque et du modèle de votre carte son avant de la désinstaller afin de faciliter la réinstallation ultérieure.

Désinstallez vos pilotes de carte son comme suit :

  1. Ouvrez Démarrer Exécuter et entrez sysdm.cpl pour afficher la boîte de dialogue Propriétés système.
  2. Allez dans Matériel Gestionnaire de périphériques.
  3. Développez Son, vidéo et jeu.
  4. Cliquez avec le bouton droit sur le pilote de la carte son, puis sélectionnez Désinstaller.

Ensuite, laissez Windows installer ses pilotes audio par défaut.

Si cela ne résout pas le problème, essayez la suggestion suivante.

Mettre à jour le BIOS

Si vous exécutez le jeu à partir d'une partition secondaire, téléchargez et installez les dernières mises à jour du BIOS de votre fabricant de carte mère.

Si cela ne résout pas le problème, essayez la suggestion suivante.

Désactiver le son intégré dans le BIOS

Désactivez la carte son intégrée dans le BIOS.

4voto

GLAF Points 234

Voici quelques détails intéressants sur l'erreur de programmation malheureuse qui cause ce bug. Crédit à Xero|Hawk des forums d'Infinity Ward pour ses recherches sur ce sujet.

Après avoir un peu creusé cette question (puisque je suis affecté moi-même), j'ai découvert que le crash était causé par ce morceau de code (probablement une petite erreur de programmation) :

004ED380  /$  51            PUSH ECX
004ED381  |.  6A 00         PUSH 0
004ED383  |.  68 78B55E0D   PUSH iw3mp.0D5EB578
004ED388  |.  6A 00         PUSH 0
004ED38A  |.  C705 D0824001>MOV DWORD PTR DS:[14082D0],iw3mp.004ED37>
004ED394  |.  C705 D4824001>MOV DWORD PTR DS:[14082D4],iw3mp.014082D>
004ED39E  |.  C605 4EB55E0D>MOV BYTE PTR DS:[D5EB54E],0
004ED3A5  |.  E8 1C9F1500   CALL 
004ED3AA  |.  85C0          TEST EAX,EAX
004ED3AC  |.  7D 14         JGE SHORT iw3mp.004ED3C2
004ED3AE  |.  50            PUSH EAX                                 ; /Arg3
004ED3AF  |.  68 A0376E00   PUSH iw3mp.006E37A0                      ; |Arg2 = 006E37A0 ASCII "Erreur d'initialisation de l'instance de son direct ! %s"
004ED3B4  |.  6A 09         PUSH 9                                   ; |Arg1 = 00000009
004ED3B6  |.  E8 15F90000   CALL iw3mp.004FCCD0                      ; \iw3mp.004FCCD0 <-- plante à l'intérieur de cette fonction
004ED3BB  |.  83C4 0C       ADD ESP,0C
004ED3BE  |.  33C0          XOR EAX,EAX
004ED3C0  |.  59            POP ECX
004ED3C1  |.  C3            RETN
004ED3C2  |>  B8 01000000   MOV EAX,1
004ED3C7  |.  A2 4EB55E0D   MOV BYTE PTR DS:[D5EB54E],AL
004ED3CC  |.  59            POP ECX
004ED3CD  \.  C3            RETN

JMP.&DSOUND.#6 est un JMP vers DSOUND.DirectSoundCaptureCreate, et sa valeur de retour est directement utilisée pour le formatage de chaîne. Il est fort probable que le programmeur voulait afficher un message d'erreur formaté (qui serait DSERR_NODRIVER), ou la valeur d'erreur en hexadécimal, ou autre chose, mais au lieu de cela il a traité la valeur de retour comme un pointeur de chaîne et parce que la fonction de formattage ne fait pas de vérification IsBadReadPtr dessus avant de la traiter, le jeu se plante. J'ai essayé de changer le %s en %X ce qui corrige effectivement ce crash, mais comme l'appel à DirectSoundCaptureCreate ne doit pas échouer, le jeu plante à une autre position, probablement lorsqu'il essaie d'utiliser l'interface pour la première fois.

0057A7E2  |.  803D 4EB55E0D>|CMP BYTE PTR DS:[D5EB54E],0 <-- le booléen IsCaptureInitialized, probablement
0057A7E9  |.  75 04         |JNZ SHORT iw3mp2.0057A7EF <-- mais parce que l'appel à Create a échoué, ce n'est pas le cas (voir extrait de code ci-dessus),...
0057A7EB  |.  33F6          |XOR ESI,ESI <-- ...donc on met ESI à zéro...
0057A7ED  |.  EB 45         |JMP SHORT iw3mp2.0057A834 <-- ...et on saute à notre ligne de code de crash (elle utilise ESI comme pointeur - très intelligent)
0057A7EF  |>  A1 D4824001   |MOV EAX,DWORD PTR DS:[14082D4]
0057A7F4  |.  6A 48         |PUSH 48
0057A7F6  |.  8BF0          |MOV ESI,EAX
0057A7F8  |.  83C0 48       |ADD EAX,48
0057A7FB  |.  6A 00         |PUSH 0
0057A7FD  |.  56            |PUSH ESI
0057A7FE  |.  A3 D4824001   |MOV DWORD PTR DS:[14082D4],EAX
0057A803  |.  E8 A8890F00   |CALL iw3mp2.006731B0
0057A808  |.  8B0D D43E7200 |MOV ECX,DWORD PTR DS:[723ED4]
0057A80E  |.  83C4 0C       |ADD ESP,0C
0057A811  |.  C746 2C 00200>|MOV DWORD PTR DS:[ESI+2C],2000
0057A818  |.  C746 30 FF000>|MOV DWORD PTR DS:[ESI+30],0FF
0057A81F  |.  C746 34 80000>|MOV DWORD PTR DS:[ESI+34],80
0057A826  |.  894E 38       |MOV DWORD PTR DS:[ESI+38],ECX
0057A829  |.  C746 1C FFFFF>|MOV DWORD PTR DS:[ESI+1C],-1
0057A830  |.  C646 44 02    |MOV BYTE PTR DS:[ESI+44],2
0057A834  |>  8B4E 38       |MOV ECX,DWORD PTR DS:[ESI+38] <-- crash ici
0057A837  |.  8B46 2C       |MOV EAX,DWORD PTR DS:[ESI+2C]
0057A83A  |.  8D7E 04       |LEA EDI,DWORD PTR DS:[ESI+4]
0057A83D  |.  57            |PUSH EDI
0057A83E  |.  C746 08 00C80>|MOV DWORD PTR DS:[ESI+8],0C800
0057A845  |.  E8 7623F7FF   |CALL iw3mp2.004ECBC0
0057A84A  |.  83C4 04       |ADD ESP,4
0057A84D  |.  85C0          |TEST EAX,EAX
0057A84F  |.  7D 21         |JGE SHORT iw3mp2.0057A872
0057A851  |.  68 B8356E00   |PUSH iw3mp2.006E35B8                    ;  ASCII "Erreur : Impossible de créer le tampon de lecture de son direct"
0057A856  |.  6A 09         |PUSH 9
0057A858  |.  E8 B323F8FF   |CALL iw3mp2.004FCC10

La même erreur a été commise au moins une autre fois, à savoir ici :

0057A94F  |.  8B11          MOV EDX,DWORD PTR DS:[ECX]
0057A951  |.  8B42 08       MOV EAX,DWORD PTR DS:[EDX+8]
0057A954  |.  51            PUSH ECX
0057A955  |.  FFD0          CALL EAX
0057A957  |.  8B35 60B55E0D MOV ESI,DWORD PTR DS:[D5EB560]
0057A95D  |>  3BC3          CMP EAX,EBX
0057A95F  |.  891D 78B55E0D MOV DWORD PTR DS:[D5EB578],EBX
0057A965  |.  7D 16         JGE SHORT iw3mp2.0057A97D
0057A967  |.  50            PUSH EAX                                 ; /Arg3
0057A968  |.  68 D0376E00   PUSH iw3mp2.006E37D0                     ; |Arg2 = 006E37D0 ASCII "Erreur de libération de l'instance de son direct ! %s"
0057A96D  |.  6A 09         PUSH 9                                   ; |Arg1 = 00000009
0057A96F  |.  E8 5C23F8FF   |CALL iw3mp2.004FCCD0                     ; \iw3mp2.004FCCD0

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X