Est-ce que quelqu'un sait s'il existe un moyen pratique de déterminer la cause du message "Aw Snap!" qui apparaît parfois sur Google Chrome? Est-ce que Chrome a un journal d'erreurs auquel je peux me référer? Je soupçonne que ce problème est causé par une boucle récursive dans le code qui absorbe ensuite toute la mémoire. Y a-t-il un moyen pour que je puisse le confirmer?
Réponses
Trop de publicités?Le compte Twitter officiel des développeurs de Chrome a lié vers un site Web qui vous aide à déboguer les pages "Aw snap" : http://www.chromium.org/for-testers/enable-logging
La recommandation est de lancer Chrome avec ces flags :
--enable-logging --v=1
Si vous le faites, vous pourrez récupérer un journal de plantage à partir du fichier chrome_debug.log
dans le répertoire des données utilisateur de Chrome (dans le répertoire parent de Default/
) ou dans le dossier de construction binaire (out\Debug
) si vous utilisez une version de débogage.
Il y a des explications ici : pour se connecter normalement sur Chrome, vous pourriez essayer :
-
Utilisez la fonction de journalisation de Chrome :
Pour activer la journalisation, lancez Chrome avec ces indicateurs en ligne de commande :
--enable-logging --v=1
La sortie sera enregistrée dans le fichier
chrome_debug.log
dans le répertoire des données utilisateur de Chrome.L'emplacement du fichier journal peut être modifié par la variable d'environnement
CHROME_LOG_FILE
.Pour la liste complète des indicateurs, consultez : Les commutateurs en ligne de commande de Google Chrome.
-
Ou utilisez la console JavaScript :
Appuyez sur Ctrl + Shift + J (Windows / Linux) ou Cmd + Option+ J (Mac).
La page Aw, Snap! est généralement liée au processus de crash de segmentation qui pourrait être lié à un bug logiciel. Pour déterminer la cause, vous pouvez activer le journal (comme suggéré dans d'autres réponses) ou analyser le backtrace du fichier core dump (sur macOS, Linux, par exemple Ubuntu).
Si vous ne connaissez pas la cause (par exemple, la pile d'exécution ne contient que des adresses mémoire), vous pouvez créer un nouveau ticket de support sur le système de suivi des bugs de Chrome (ou vérifier s'il en existe déjà un). Lors du signalement, vous devriez télécharger et inclure l'identifiant de crash en accédant à la page chrome://crashes/
, de sorte que les adresses mémoire puissent être traduites en symboles de débogage par les mainteneurs de Chrome.
Alternativement, vous pouvez décoder les crash dumps vous-même.
Voir aussi : Où se trouve le fichier de dump de crash de Google Chrome ?
Pour simplifier ce qui précède, voici les principales raisons pour lesquelles la page peut planter :
-
Vous avez trouvé le bug (soit sur le site web, soit avec le navigateur web lui-même).
-
Bug du site web
-
Exemple : Le VM JavaScript a atteint la mémoire allouée maximale (plantage par manque de mémoire).
Pour vérifier cela, exécutez DevTools et consultez l'onglet Memory. Si c'est le cas, le code devrait automatiquement se mettre en pause juste avant le potentiel plantage par manque de mémoire (par exemple, Problème 810015). Si tel est le cas, signalez le problème au propriétaire du site web, ou profilez le code JS pour trouver le bug.
-
-
Bug du navigateur
- Envisagez de désactiver les extensions ou de les exécuter en mode Incognito.
- Envisagez de supprimer les fichiers mis en cache.
- Signaler un bug.
- Réinstaller le navigateur.
- Utiliser une version différente de Chrome telle que Chromium, Dev ou le canal Canary.
- Utiliser un autre navigateur comme Epic, Firefox, Opera, Brave, Waterfox, Torch ou autre.
- Si le problème est reproductible, vous pouvez essayer de recompiler les sources de Chrome avec les symboles de débogage et analyser la pile d'exécution ou le signaler.
-
-
Vous avez atteint le nombre maximum de fichiers ouverts dans votre système (voir : #787381).
Sous Linux/Unix/macOS, pour vérifier cela, exécutez :
sysctl -a | grep files
et vérifiez si
kern.num_files
a atteint la limite dekern.maxfiles
.Si c'est le cas, augmentez la limite en exécutant les commandes suivantes :
sysctl -w kern.maxfiles=20480 which launchctl && launchctl limit maxfiles 65536 unlimited which ulimit && ulimit -c unlimited
-
Vous pourriez avoir un logiciel malveillant/virus qui altère vos fichiers Chrome et provoque le crash.
-
Vous pourriez avoir un problème matériel lié à la mémoire. Effectuez donc des tests (comme
memtest
).
macOS
Pour afficher les journaux de Chrome, exécutez :
log stream --level debug --predicate 'processImagePath contains "Google"'
ou en exécutant l'application Console, où vous pouvez également vérifier s'il y a des fichiers de dump de crash (ou vérifiez dans ~/Library/Logs/DiagnosticReports
). Voir : Déboguer l'erreur "Aw, Snap!" dans Chrome
Débogage
Si rien de ce qui précède n'aide, vous pouvez envisager de compiler Chrome à partir des sources (cela prend du temps), puis l'exécuter directement depuis le Terminal. Ensuite, chaque erreur "Aw, Snap!" devrait être suivie de la stack trace complète incluant les fonctions et lignes dans le fichier source où elle s'est produite.
Sur un Android où je n'avais pas l'option du drapeau de journalisation au démarrage, j'ai trouvé utile d'enregistrer un profil de performance dans les outils de développement.
Il m'a montré le dernier appel de fonction JavaScript effectué avant le Aw Snap.
Il s'est avéré que document.innerHtml a lancé une erreur d'allocation de chaîne non capturée de quelque sorte sur une grande div...
Je suis un développeur web et j'ai hâte que tous mes clients mettent à jour Google Chrome, alors.. Nous avons débogué ce problème et trouvé une solution!
Semble être un problème CSS simple à corriger. Il semble que dans certaines mises à jour de Chrome, ils ont interdit à certains balises HTML d'avoir du contenu AVANT et APRÈS. L'une de ces balises est Fieldset. Notre équipe n'en a trouvé aucune autre, mais en supprimant un fieldset:before{ content: '';... } résout le problème immédiatement!
Si vous trouvez d'autres BALISES, veuillez les poster ici. Si vous rencontrez le même problème, recherchez votre code CSS pour les déclarations :before et :after, cela devrait être facile à corriger.
Récemment ajouté ici: https://stackoverflow.com/questions/69161461/google-chrome-status-access-violation-error/69161462#69161462