Est-ce que quelqu'un sait s'il existe un moyen pratique de déterminer la cause du "Aw Snap!" message qui apparaît parfois sur Google Chrome? Chrome a-t-il un journal d'erreur auquel je peux me référer? Je soupçonne que ce problème est dû à une boucle récursive dans le code qui engloutit alors toute la mémoire? Y at-il un moyen que je peux confirmer cela?
Il y en a, voir les explications ici: pour la journalisation ordinaire dans Chrome, vous pouvez essayer:
Utilisez fonction de journalisation de Chrome :
Pour activer la journalisation, lancez Chrome avec les indicateurs de ligne de commande suivants:
--enable-logging --v=1
La sortie sera enregistrée dans le fichier chrome_debug.log
in répertoire de données de l'utilisateur Chrome .
L'emplacement du fichier journal peut être remplacé par la variable d'environnement CHROME_LOG_FILE
.
Pour obtenir la liste complète des indicateurs, vérifiez: commutateurs de ligne de commande Google Chrome .
Ou utilisez la console javascript :
Presse Ctrl + Shift + J (Windows/Linux) ou Cmd + Option+ J (Mac).
Le compte Twitter officiel des développeurs Chrome est lié à un site Web qui vous permet de déboguer les pages "Aw snap": http : //www.chromium.org/for-testers/enable-logging
La recommandation est de lancer Chrome avec ces drapeaux:
--enable-logging --v=1
Dans ce cas, vous pouvez récupérer un journal des incidents dans le fichier chrome_debug.log
du répertoire de 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 génération de débogage.
La page Aw, Snap! est généralement liée au processus erreur de segmentation crash qui pourrait être liée au bogue software . Pour déterminer la cause, vous pouvez activer la journalisation (comme suggéré dans d'autres réponses) ou analyser la trace du fichier de vidage principal (sur macOS , Linux , par exemple Ubuntu ).
Si vous ne connaissez pas la cause (par exemple, la trace de pile contient uniquement des adresses de mémoire), vous pouvez créer un nouveau ticket de support dans le système de suivi des bogues Chrome (ou vérifier s'il en existe déjà un. ). Lors de la création de rapports, vous devez télécharger et inclure l'ID d'incident en accédant à la page chrome://crashes/
, afin que les adresses de mémoire puissent être traduites en symboles de débogage par les responsables de Chrome.
Sinon, vous pouvez decode crash dumps vous-même.
Voir aussi: Où se trouve Google Chrome Crash Dump?
Pour simplifier ci-dessus, voici les principales raisons pour lesquelles la page peut se bloquer:
Vous avez trouvé le bug (sur le site Web ou avec le navigateur Web lui-même).
Bug du site
Exemple: JavaScript VM a atteint le maximum de mémoire allouée (crash de mémoire insuffisante).
Pour vérifier cela, exécutez DevTools et vérifiez l'onglet Mémoire . Si tel est le cas, le code devrait automatiquement se mettre en pause juste avant le crash potentiel de mémoire insuffisante (par exemple, Issue 810015 ). Si tel est le cas, signalez le problème au propriétaire du site Web ou profilez le code JS pour rechercher le bogue.
Bug du navigateur
Vous avez atteint le nombre maximal de fichiers ouverts dans votre système (voir: # 787381 ).
Sur Linux/Unix/macOS, pour vérifier cela, exécutez:
sysctl -a | grep files
et vérifiez si kern.num_files
a atteint la limite de kern.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 malware/virus qui altère vos fichiers Chrome provoquant le crash.
memtest
).Pour afficher les journaux à partir de Chrome, exécutez:
log stream --level debug --predicate 'processImagePath contains "Google"'
ou en exécutant l'application Console , où vous pouvez également rechercher d'éventuelles sauvegardes sur incident (ou archiver ~/Library/Logs/DiagnosticReports
). Voir: Déboguer l'erreur “Aw, Snap!” Dans Chrome
Si rien de ce qui précède ne vous aide, vous pouvez envisager compiler Chrome à partir de la source (prend beaucoup de temps), puis le lancer directement à partir du terminal. Après cela, chaque erreur "Aw, Snap!" Devrait être suivie par la trace complète de la pile, y compris les fonctions et la ligne du fichier de code source où elle s’est produite.