KB 973197 & Service Unavailable sous Windows 2003/IIS6

Hier, nous avons traité plusieurs incidents liés à une indisponibilité totale d'IIS après l'installation du correctif KB 973917.
Ce problème n'est pas généré par l'installation du correctif, mais il permet de le dévoiler.
Je tiens à préciser que si vous avez installé IIS correctement vous ne rencontrerez aucun problème avec ce correctif.

Symptômes :

L'installation du correctif KB 973917 provoque instantanément une indisponibilité du serveur web.
Vous pourrez constatez que :

  • Une erreur du type "Service Unavailable" est affichée dans le navigateur client et ce dès la première requête
  • Dans l'interface de gestion de IIS l'application pool est stoppé
  • Dans le journal d'évènement Système vous constatez :
    • 5 évènement de type "Avertissement" avec comme source W3SVC et comme évènement 1009
    • 1 évènement de type "Erreur" avec comme source W3SVC et comme évènement 1002
      • Ceci est dû au rapid fail protection de IIS qui désactive l'application pool si par défaut 5 erreurs (comme un crash du processus W3WP.exe) se produisent en moins de 5 minutes
      • Dans notre cas nous avons les 5 crashs en moins de deux secondes
  • Si vous essayez de générer un dump mémoire sur le processus W3WP.exe, il n'y en aura aucun de généré
  • SI vous lancez le processus W3WP.exe via ligne de commande, vous ne verrez aucun affichage et le processus se terminera directement

Cause :

Ce correctif amène une nouvelle version pour plusieurs DLLs de IIS et, en particulier, W3CORE.dll.
Cette DLL fait appel à une API de IISUTIL.dll apportée par le Service Pack 2.
Si vous expérimentez les symptômes décris précédemment, il y a de forte chance que vos binaires IIS correspondent à la version du Service Pack 1 de Windows 2003, et ce, même si la version de Windows affichée par WINVER est le Service Pack 2.
Typiquement, ce scénario se produit lorsque vous installez IIS à partir du CD original, après avoir installé le Service Pack 2. Ceci revient à installer IIS avec des binaires pré-SP2.

Pour vérifiez ce point, allez dans le répertoire "%Windows%\System32\inetsrv" et affichez la version de "IISUTIL.dll"
Si la version est 6.0.3790.1830, c'est que vous utilisez effectivement les binaires du Service Pack 1 et que vous êtes dans le problème décrit par cet article.
Si vous êtes en Service Pack 2, vous verrez alors la version 6.0.3790.3959.

Solution :

La solution la plus simple pour venir à bout de ce comportement, en dehors de la désinstallation du correctif, est de réinstaller le Service Pack 2 :

Une KB a d'ailleurs déjà été publiée sur le sujet :

@ bientôt
Sylvain Lecerf & L'équipe de support IIS Microsoft France