Jak ustalić, co powoduje, że Chrome wyświetla okno dialogowe „Aw, Snap”

31

Czy ktoś wie, czy istnieje praktyczny sposób ustalenia przyczyny „Aw Snap!” wiadomość, która czasami pojawia się w Google Chrome? Czy Chrome ma dziennik błędów, do którego mogę się odwoływać? Podejrzewam, że przyczyną tego problemu jest pętla rekurencyjna w kodzie, która następnie pochłania całą pamięć? Czy mogę to jakoś potwierdzić?

QFDev
źródło

Odpowiedzi:

28

Zobacz wyjaśnienia tutaj: w przypadku zwykłego logowania w Chrome możesz spróbować:

vinnief
źródło
1
Myślę, że pierwsza opcja pomoże wyizolować ten problem. Konsola deweloperska zawiesza się, zanim może wydać cokolwiek użytecznego.
QFDev
2
Włączyłem dziennik, a po awarii Chrome nie zarejestrował żadnego błędu w momencie awarii. Czy istnieje odniesienie, które może zapewnić wgląd w elementy dziennika?
Khadim Ali
Czy to chromowana strona o logowaniu. H, czego chcesz?
vinnief
Czy w odpowiedzi proszę podać skróconą treść linków? Starzeje się, jeśli linki umrą.
mafu
3
Konsola JavaScript nie jest zwykle przydatna w tym przypadku, ponieważ narzędzia programistyczne rozłączają się, gdy strona ulega awarii.
PawnStar
28

Oficjalne konto Twitter Developers Chrome jest połączone ze stroną internetową, która pomaga debugować strony „Aw snap”: http://www.chromium.org/for-testers/enable-logging

Zalecamy uruchomienie Chrome z tymi flagami:

--enable-logging --v=1

Jeśli to zrobisz, możesz pobrać dziennik awarii z pliku chrome_debug.logw katalogu danych użytkownika Chrome (w katalogu nadrzędnym Default/) lub w folderze kompilacji binarnej ( out\Debug), jeśli korzystasz z kompilacji debugowania.

Benny Neugebauer
źródło
5
głosuj, ponieważ ten post wspomniany na --enable-logging --v=1 długo przed edycją zaakceptowanej odpowiedzi dodał go.
CAD bloke
2

Kurza twarz! strona jest zwykle związana z awarią segmentacji procesu, która może być związana z błędem oprogramowania . Aby ustalić przyczynę, możesz włączyć rejestrowanie (jak sugerowano w innych odpowiedziach) lub przeanalizować ślad pliku zrzutu pamięci (na macOS , Linux , np. Ubuntu ).

Jeśli nie znasz przyczyny (np. Ślad stosu składa się tylko z adresów pamięci), możesz utworzyć nowy bilet pomocy technicznej w systemie śledzenia błędów Chrome (lub dokładnie sprawdź, czy już istnieje). Podczas raportowania należy przesłać i dołączyć identyfikator awarii, przechodząc na chrome://crashes/stronę, aby adresy pamięci mogły zostać przetłumaczone na symbole debugowania przez opiekunów Chrome.

Alternatywnie możesz samodzielnie zdekodować zrzuty awarii .

Zobacz także: Gdzie znajduje się Google Crash Dump?


Upraszczając powyższe, oto główne przyczyny awarii strony:

  • Znalazłeś błąd (na stronie internetowej lub w przeglądarce).

    • Błąd strony internetowej

      • Przykład: VM VM osiągnęła maksymalną przydzieloną pamięć (awaria braku pamięci).

        Aby to sprawdzić, uruchom DevTools i sprawdź zakładkę Memory . W takim przypadku kod powinien automatycznie zatrzymać się tuż przed potencjalnym awarią braku pamięci (np. Problem 810015 ). Jeśli tak, zgłoś problem właścicielowi witryny lub profil JS, aby znaleźć błąd.

    • Błąd przeglądarki

      • Rozważ wyłączenie rozszerzeń lub uruchomienie w trybie incognito .
      • Rozważ usunięcie buforowanych plików .
      • Zgłoś błąd .
      • Ponownie zainstaluj przeglądarkę.
      • Użyj innej wersji Chrome, takiej jak kanał Chromium , Dev lub Canary .
      • Używaj różnych przeglądarek, takich jak Epic, Firefox, Opera, Brave, Waterfox, Torch lub innych.
      • Jeśli problem jest powtarzalny, możesz spróbować ponownie skompilować źródła Chrome za pomocą symboli debugowania i przeanalizować ślad stosu lub zgłosić go.
  • Osiągnięto maksymalną liczbę otwartych plików w systemie (patrz: # 787381 ).

    W systemie Linux / Unix / macOS, aby to sprawdzić, uruchom:

    sysctl -a | grep files
    

    i sprawdź, czy kern.num_filesosiągnął limit kern.maxfiles.

    W takim przypadku zwiększ limit, uruchamiając następujące polecenia:

    sysctl -w kern.maxfiles=20480
    which launchctl && launchctl limit maxfiles 65536 unlimited
    which ulimit && ulimit -c unlimited
    
  • Możesz mieć złośliwe oprogramowanie / wirusa, który zmienia pliki Chrome powodujące awarię.

  • Może występować problem związany z pamięcią sprzętową . Więc uruchom test (np. memtest).

System operacyjny Mac

Aby wyświetlić dzienniki z Chrome, uruchom:

log stream --level debug --predicate 'processImagePath contains "Google"'

lub uruchamiając aplikację Console , w której możesz również sprawdzać zrzuty awaryjne (lub meldować się ~/Library/Logs/DiagnosticReports). Zobacz: Błąd debugowania „Aw, Snap!” W Chrome


Debugowanie

Jeśli żadne z powyższych nie pomoże, możesz rozważyć skompilowanie Chrome ze źródła (zajmuje to dużo czasu), a następnie uruchomić bezpośrednio z terminalu. Następnie po każdym błędzie „Aw, Snap!” Powinien następować ślad pełnego stosu, w tym funkcje i wiersz w pliku kodu źródłowego, w którym wystąpił.

kenorb
źródło