Web Inspector stürzt auf Safari 7 ab

Wenn ich auf einer bestimmten internen Website den Web Inspector in Safari 7 öffne, hängt er sich sofort auf und dann stürzt der gesamte Tab ab. Wenn ich den abgestürzten Tab schließe, bekomme ich dann diese Meldung in der Konsole:

1/22/14 10:54:27.896 AM com.apple.launchd[1]: (com.apple.WebKit.WebContent.D50214F7-A6C9-46E5-8F06-71C873A2D4B8[96246]) Exited with code: 1

Leider kann ich keinen Link oder Code für die Website selbst teilen, da sie intern ist, aber hier sind einige zusätzliche Details:

  • Dies geschieht auf drei verschiedenen Computern, auf denen Safari 7 unter OS X Mavericks ausgeführt wird
  • Es bleibt bestehen, auch wenn ich Safari 7 beende und neu starte
  • Es passiert nicht , wenn ich die Inspektoren in anderen Browsern verwende, einschließlich Safari 6 (unter OS X Lion).
  • Es passiert nicht , wenn ich den Web Inspector von Safari 7 auf anderen Websites verwende
  • Wenn ich die Seite in einem anderen Browser (z. B. Firefox) ansehe, werden keine Fehler gemeldet

Ich habe diese Frage gefunden , die so klingt, als würde sie dasselbe Problem beschreiben, aber es gibt keine weiteren Details und die dortige Lösung funktioniert bei mir nicht, weshalb ich dies als neue Frage poste.


UPDATE: Ein weiteres mögliches Teil des Puzzles – der Web Inspector stürzt nur ab, wenn ich die Site vom Server aus ansehe, nicht lokal.

Ich dachte zunächst, das läge daran, dass ich auf Pingdom und Google Analytics mit protokollagnostischen URLs verweise (die nicht lokal aufgelöst werden, also nicht geladen werden), z.

//www.google-analytics.com...

Das ließ mich denken, dass etwas in einem dieser Skripte den Absturz verursachte, was erklären würde, warum er nur auf der gehosteten Seite auftrat (wo die Pfade aufgelöst werden). Aber keine Würfel: Selbst wenn ich diesen URLs das Präfix voranstelle http://, stürzt der Web Inspector nicht ab, wenn ich die Seite lokal betrachte, sondern nur außerhalb des Servers.

Antworten (2)

Ich habe gerade genau das gleiche Problem auf einer Website behoben. Es ist ärgerlich, wenn ein Debugger verschluckt wird, sodass er Ihnen nicht helfen kann, das Problem zu finden!

Mein Problem wurde durch eine streunende Klasse verursacht, die ihren Weg in einen Stil fand.

<div style="background: #ffb380; padding-bottom:30px; width:300px; text-center;">

Das Entfernen des Textcenters hat das Problem behoben und der Web-Inspector wird korrekt geladen. Ich würde erwarten, dass Sie auch einen Fehler auf der Seite haben, der dazu führt, dass der Web-Inspektor erstickt. Zwei Vorgehensweisen kann ich empfehlen:

  1. Ein Online-Fehlerprüfer, z. B. http://www.onlinewebcheck.com/
  2. Spüren Sie das Problem auf, indem Sie Inhalte von der Seite entfernen, bis der Web-Inspector geladen wird.
Mein HTML besteht die Validierung. Mein CSS hat einen "Fehler", der wirklich nur darauf zurückzuführen ist, dass ich ein -webkit-Präfix in einem bestimmten Selektor verwende. Und wieder stürzt der Web Inspector nicht ab, wenn ich die Seite lokal inspiziere ...
Wenn Ihre Server-/lokalen Seiten unterschiedliche js/html verwenden oder etwas anders ausführen, könnte dies dies erklären. Ich würde schrittweise Inhalte von der Seite entfernen, um die Ursache zu ermitteln.
Siehe mein Update – der einzige Unterschied zwischen lokal/Server bestand darin, dass die lokale Version zwei Skripte hatte, die nicht wirklich geladen wurden, also dachte ich, dass dies der Übeltäter war. Aber selbst wenn ich sie lokal lade, bekomme ich den Absturz nicht.
Haben Sie schon versucht, das Problem durch Entfernen von Seiteninhalten zu lokalisieren? IMHO ist es der einzige Weg, wie Sie es lösen werden.

Der Absturz sollte ein Absturzprotokoll erzeugen. Denn jeder Web-Content läuft in einem eigenen Prozess. Öffnen Sie /Applications/Utilities/Console.app und geben Sie WebContent ein. Dies sollte Ihnen einen Absturzbericht zeigen:

30.01.2014 21:39:20.697 ReportCrash[4191]: Absturzbericht für com.apple.WebKit.WebContent[331] Version 9537 (9537.73.11) in /Benutzer/Benutzername/Library/Logs/DiagnosticReports/com gespeichert. apple.WebKit.WebContent_2014-01-30-213920-1_My-Mac.crash

Es wird auch eine Schaltfläche geben: Geben Sie hier die Bildbeschreibung einauf die Sie klicken können, um weitere Details zu erhalten.

Darin sehen Sie Zeilen wie:

Crashed Thread:  18  Dispatch queue: CA::CG::Queue

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
abort() called

Posten Sie diesen Abschnitt und den Thread, in dem es heißt, dass es abgestürzt ist. Mein Beispiel ist Thread 18

Es wird zwei Einträge für den Thread geben. Einer, der so aussieht:

18  com.apple.HIToolbox             0x00007fff8f7cecb7 ReceiveNextEventCommon + 479

und noch eins weiter unten:

Thread 18 Crashed:: Dispatch queue: CA::CG::Queue
0   libsystem_kernel.dylib          0x00007fff96301866 __pthread_kill + 10
1   libsystem_pthread.dylib         0x00007fff8d0f235c pthread_kill + 92
2   libsystem_c.dylib               0x00007fff904adbba abort + 125
3   libGPUSupportMercury.dylib      0x00007fff95e551b6 gpusKillClient + 111
4   libGPUSupportMercury.dylib      0x00007fff95e5651a gpusSubmitDataBuffers + 161
5   com.apple.GeForceGLDriver       0x00001234402eefe1 0x123440000000 + 3076065
6   com.apple.GeForceGLDriver       0x00001234402eee49 0x123440000000 + 3075657
7   com.apple.QuartzCore            0x00007fff9a4f7cf4 CA::CG::Renderer::flush(bool) + 44
8   com.apple.QuartzCore            0x00007fff9a4f4fb5 CA::CG::IOSurfaceQueue::flush_renderer(CA::CG::Queue::FlushMode) + 117
9   com.apple.QuartzCore            0x00007fff9a4f6b5d CA::CG::Queue::render_callback(void*) + 555
10  libdispatch.dylib               0x00007fff9781d2ad _dispatch_client_callout + 8
11  libdispatch.dylib               0x00007fff9781f68f _dispatch_queue_drain + 451
12  libdispatch.dylib               0x00007fff978209dd _dispatch_queue_invoke + 110
13  libdispatch.dylib               0x00007fff9781efa3 _dispatch_root_queue_drain + 75
14  libdispatch.dylib               0x00007fff97820193 _dispatch_worker_thread2 + 40
15  libsystem_pthread.dylib         0x00007fff8d0f2ef8 _pthread_wqthread + 314
16  libsystem_pthread.dylib         0x00007fff8d0f5fb9 start_wqthread + 13

Wenn Sie diese Abschnitte hier veröffentlichen, kann jemand den Fehler erkennen oder auch nicht.

Hm ... die Registerkarte scheint kein Absturzprotokoll zu erstellen. Ich sehe nichts in Console.app, das sich auf WebContent bezieht, bis ich die abgestürzte Registerkarte manuell schließe, was dann die Nachricht erzeugt, die ich in meiner Frage zitiert habe.
Ok, es war einen Punt wert. Wenn Sie die Webinspection für eine andere Seite geöffnet haben und dann zu dieser URL gehen, was passiert. Oder wenn Sie sich in der Konsolenansicht des Webinspektors befinden.
Wenn ich das tue, hängt sich das Ganze auf, bevor irgendetwas fertig geladen ist, sodass die Konsole des Web-Inspektors keine Möglichkeit hat, irgendwelche Meldungen anzuzeigen. Mir ist auch aufgefallen, dass keiner der „Safari Web Content“-Prozesse im Aktivitätsmonitor abgestürzt ist, also denke ich, dass es deshalb kein Absturzprotokoll gibt?