Déboguer une page Google lente dans Firefox sous Linux
Sommaire
Déboguer une page Google lente dans Firefox sous Linux #
Ce guide présente une méthode pour diagnostiquer un gel ou une saturation de Firefox sur une page Google. L’objectif est de déterminer si la cause provient :
- du JavaScript Google,
- du moteur de rendu Firefox,
- du GPU,
- du noyau Linux,
- ou d’un service worker ou tracker.
1. Isoler le problème #
Commencer par éliminer les variables parasites.
firefox -P
Créer un profil vierge, sans extensions, puis ouvrir uniquement la page fautive.
Si le problème disparaît, l’origine est interne au profil (cache, extensions, service workers). S’il persiste, la page est intrinsèquement pathologique.
2. Identifier le processus fautif #
Dans Firefox :
about:processes
Repérer le PID du processus Isolated Web Content associé à la page. C’est ce PID qu’il faut profiler.
3. Profilage CPU avec perf #
3.1 Autoriser perf #
sudo sysctl -w kernel.kptr_restrict=0
sudo sysctl -w kernel.perf_event_paranoid=1
3.2 Enregistrer pendant le gel #
sudo perf record -g -p PID
Reproduire le freeze, puis interrompre avec Ctrl+C.
3.3 Lecture rapide #
sudo perf report --stdio | head -n 50
Si la sortie contient :
Isolated Web Co
[anon:js-executable-memory]
0x0000...
cela indique un bouclage en JavaScript JIT. Le problème ne vient donc ni du GPU, ni du noyau, ni du moteur de rendu.
4. Pourquoi perf ne voit pas le JavaScript #
Le moteur SpiderMonkey de Firefox compile le JavaScript en code machine via JIT.
perf ne dispose donc pas des symboles de fonction JavaScript, seulement des adresses mémoire.
Pour une analyse lisible, il faut utiliser l’outil interne de Mozilla.
5. Profilage JavaScript avec l’outil intégré #
Dans Firefox :
about:profiling
Activer les options :
- JavaScript
- JS allocations
- DOM
- Network
Démarrer l’enregistrement, recharger la page, attendre le gel, puis stopper. Le profil généré affiche :
- le fichier JavaScript concerné,
- la fonction fautive,
- la ligne exacte,
- le domaine (google.com, gstatic.com, etc.).
Ce profil constitue la preuve de l’origine du blocage.
6. Causes fréquentes observées #
| Élément Google | Effet principal |
|---|---|
| reCAPTCHA invisible | Boucle JS infinie |
| Google Optimize | MutationObserver excessif |
| Ads iframe | Inflation du DOM |
| Service Worker | wake-lock permanent |
| Analytics | Polling intensif |
7. Vérification par blocage sélectif #
Installer uBlock Origin, puis bloquer temporairement :
google-analytics.com
doubleclick.net
googleoptimize.com
gstatic.com
Recharger la page. Si le freeze disparaît, la corrélation est confirmée.
8. Conclusion technique #
Un gel de Firefox sur une page Google provient presque toujours d’un script JavaScript compilé en JIT qui tourne en boucle. Il ne s’agit pas d’un défaut du navigateur ni du système, mais d’une anomalie algorithmique côté Google.