Crash systématique d'Internet Explorer (IE8 en l'occurence) à l'ouverture d'un site
Je me suis dernièrement retrouvé avec un poste sur lequel IE8 crashait (dans urlmon) systématiquement à l'ouverture du site impots.gouv.fr (ça tombe bien en cette période de déclaration :p, mais en fin de compte ce n'est pas directement lié à ce site).
Lancer IE sans addins, sans DEP, etc n'a strictement rien changé mais après avoir creuser quelques pistes, il a été déterminé que ce crash n'intervenait que sur un seul compte utilisateur.
Le log Application contenait l'entrée suivante :
Application défaillante iexplore.exe, version 8.0.6001.18702, module défaillant urlmon.dll, version 8.0.6001.18702, adresse de défaillance 0x0003e819.
Dans le cas présent, la reproduction du problème avec un debugger attaché et une analyse rapide m'a permit d'obtenir une piste assez rapidement (pas besoin d'un bon niveau d'utilisation de cdb, windbg & co : assurez vous juste de bien charger les symboles publics et utilisez !analyze pour obtenir entre autres la stack) :
STACK_TEXT:
020bca34 1a41fc23 020bcac8 020bd090 001b3750 urlmon!CSecurityManager::CheckMappings+0x1cc
020bca54 1a41fe15 020bcac8 020bd090 04332120 urlmon!CSecurityManager::CheckHKCUMappings+0x1d
020bca70 1a412d6d 020bcac8 020bd090 00000000 urlmon!CSecurityManager::CheckSiteAndDomainMappings+0x52
020bca90 1a41307d 020bcac8 020bd090 00000000 urlmon!CSecurityManager::_MapComponentsToZone+0xe7
020bcf94 1a412f7a 037f9540 020bd090 00000000 urlmon!CSecurityManager::_MapUrlToZoneDirect+0xa0
020bcfd8 1a412b3f 037f9540 020bd090 ffffffff urlmon!CSecurityManager::MapUrlToZoneEx2Internal+0x120
020bd008 1a4140ee 037f9540 020bd090 00000000 urlmon!CSecurityManager::GetZoneFromUri+0x9a
020bd03c 1a4565b0 037f9540 037f9540 020bd090 urlmon!CSecurityManager::MapUrlToZoneEx2+0xf2
020bd088 1a41790e ffffffff 037f9540 00000000 urlmon!ShouldUseEmulateIE7ModeForIntranet+0x61
020bd0d8 63597c2e 04332120 037f9540 00000000 urlmon!MapUriToBrowserEmulationState+0x12a
020bd0fc 635b1dd5 020bd118 00000000 020bd230 mshtml!CMarkup::GetEmulationState+0xd8
...
Voir des appels MapUrlToZone, GetZone etc nous fait aller directement dans la boite de dialogue de configuration des sites de confiances, pour y trouver ceci :
Normalement ce type de configuration n'est pas possible via le GUI (refus d'entrée en double) mais je suppose que dans le cas présent il s'agit d'un problème lors de la migration d'IE7 à IE8.
Les entrées du registre (regjump HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains) qui correspondent à cette configuration sont bel et bien "différentes", un truc a peut être changé dans l'interprétation entre 2 versions :

Bref, en cas de crash dans urlmon et plus particulièrement dans CSecurityManager::CheckMappings, vérifiez les sites de confiance (dans IE, pas en modifiant directement le registre), leur paramétrage existant peut en être la cause.
Donc, aucun lien direct avec le site impots.gouv.fr qui n'est en rien responsable du problème, mais je pense plutôt que c'est un problème de migration.
PS : Pour la petite histoire, la présence de cette entrée dans les sites de confiances doit dater de mes tentatives de compréhension d'un échec sur les premières versions du site quand l'utilisateur était normal (non administrateur de la machine...) : la signature de la déclaration échouait sans identifier explicitement le problème.
En fin de compte il s'agissait simplement d'un problème de droits sur le système de fichiers (merci FileMon et/ou Process Monitor) : de mémoire, il y avait tentative d'écriture dans un répertoire temp situé sous le répertoire d'installation de Java (oui, un répertoire commun à tous les utilisateurs...), ce qui forcément échouait avec des profils utilisateurs standards.
Comme quoi lors de tentatives de résolution d'incident, il faut toujours noter ce que l'ont fait pour faire le ménage derrière, une fois le problème réel identifié !
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :