(modifié le 20 juillet 2017 à 0:43)

J'ai été confronté à un étrange dysfonctionnement sur Windows 7. Certaines actions liées au processus de l'explorateur Windows (explorer.exe) freezent avant de se débloquer après un timeout d'une durée toujours identique (5 secondes environ).

J'utilise beaucoup Everything et il suffisait que je fasse un clic droit pour ouvrir le dossier contenant le dossier contenant d'un fichier pour me manger la lenteur. Sans que je ne comprenne pourquoi. Et, à force, j'ai trouvé !

Symptômes

J'ai tout d'abord pensé que mon système Windows déconnait, peut-être un driver (Acronis, Oracle VirtualBox), un fichier DLL, un problème de droit sur une clé de registre... et pourquoi pas un fichier système corrompu. Mais le "sfc /scannow" n'avait rien donné.

Je ne me suis pas rendu compte tout de suite de la lenteur, donc je n'ai pas pu identifier quelle action en était à l'origine et donc pas de restauration possible. Je n'ai pas envie de réinstaller Windows pour autant, trop de paramétrage à refaire...

Et puis un soir je lance un ping :

'ping' n’est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

Bon là je percute, je dois avoir un problème de variables d'environnement.

Identification de la cause

Je regarde les variables d'environnements et je supprime d'anciennes variables de logiciels désinstallés. Comme c'était juste après une mise à jour de VirtualBox je me dis que c'est sûrement le coupable... en effet il m'a déjà joué des tours en supprimant mes cartes réseaux, alors pourquoi pas. Mais non je fais fausse route.

Deux variables attirent mon attention :

  • GTK_BASEPATH, valeur: C:\PROGRA~2\GTK2-R~1
  • PANGO_WIN32_NO_UNISCRIBE, valeur : anything

Et surtout la variable Path qui contient seulement ceci :

%GTK_BASEPATH%\bin;

Je comprends maintenant pourquoi la commande ping (et toutes les autres) ne fonctionnent plus, ce chemin est vital pour Windows. Je me demande même comment je n'ai pas plus de problèmes !

Correction du défaut

Je corrige la variable Path en prefixant par la valeur par défaut :

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%GTK_BASEPATH%\bin;

Sans grande surprise, la commande ping refonctionne... et je n'ai plus aucune lenteur.

Identification du coupable

Je recherche donc ce fameux "PANGO", qui semble être une bibliothèque de rendu de texte, en lien avec GTK. Je me rends à l'emplacement de la variable GTK_BASEPATH (C:\Program Files (x86)\GTK2-Runtime) et je trouve des fichiers avec une date d'installation du 07/07/2017.

Je regarde ce que j'ai installé ce jour là dans "programmes et fonctionnalités" et j'y trouve AutoScan Network. Une application que j'ai testé il y a quelques semaines, et c'est bien elle qui m'a écrasé ma variable Path au lieu de la compléter ! Quand je dis elle c'est probablement le composant GTK qu'elle embarque, mais peu importe. Une erreur de taille qui m'a bien prise la tête !

Conclusion

Vigilence donc si vous installez cette application. Comme je ne m'en suis pas servi je l'ai viré et elle m'a laissé des traces dans le menu démarrer et AppData... trouvées grâce à RevoUninstaller Pro.

Voilà pourquoi c'est toujours une mauvaise idée d'utiliser sa machine principale pour tester des logiciels à la con... préférez une machine virtuelle ou à minima Sandboxie quand ça fonctionne avec.

Je ne l'ai pas précisé mais j'avais déjà analysé finement les processus à l'aide de process explorer pour localiser un éventuel blocage au moment précis, mais je ne trouvais rien. J'étais donc à 2 doigts de me lancer dans une analyse avec procmon, mais cet utilitaire produit énormément de lignes à analyser... sans garantie de ne pas passer à côté.

J'en déduis donc que Windows doit avoir un timeout codé en dur avec un chemin par défaut à utiliser en cas de souci de déclaration de cette variable Path.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter