Web Inspector falla en Safari 7

En un sitio interno en particular, cada vez que abro Web Inspector en Safari 7, inmediatamente se bloquea y luego toda la pestaña falla. Cuando cierro la pestaña bloqueada, aparece este mensaje en la Consola:

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

Desafortunadamente, no puedo compartir un enlace o código para el sitio en sí ya que es interno, pero aquí hay algunos detalles adicionales:

  • Esto sucede en tres máquinas diferentes que ejecutan Safari 7 en OS X Mavericks
  • Persiste incluso si salgo y reinicio Safari 7
  • No sucede cuando uso los inspectores en otros navegadores, incluido Safari 6 (en OS X Lion)
  • No sucede cuando uso Web Inspector de Safari 7 en otros sitios
  • Si inspecciono el sitio en un navegador diferente (por ejemplo, Firefox), no hay errores informados

Encontré esta pregunta que parece que describe el mismo problema, pero no hay otros detalles y la solución no funciona para mí, por lo que estoy publicando esto como una nueva pregunta.


ACTUALIZACIÓN: otra posible pieza del rompecabezas: el inspector web se bloquea solo cuando estoy viendo el sitio fuera del servidor, no localmente.

Inicialmente pensé que esto se debía a que hacía referencia a Pingdom y Google Analytics con URL independientes del protocolo (que no se resuelven localmente, por lo que no se cargan), por ejemplo:

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

Eso me hizo pensar que algo en uno de esos scripts estaba causando el bloqueo, lo que explicaría por qué solo ocurrió en la página alojada (donde se resuelven las rutas). Pero no hay problema: incluso si prefijo esas URL con http://, Web Inspector no fallará cuando esté viendo la página localmente, solo fuera del servidor.

Respuestas (2)

Acabo de solucionar precisamente el mismo problema en un sitio. ¡Es molesto cuando un depurador se ahoga, por lo que no puede ayudarlo a encontrar el problema!

Mi problema fue causado por una clase extraviada que se abrió paso en un estilo.

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

La eliminación del centro de texto solucionó el problema y el inspector web se carga correctamente. Espero que también tenga un error en la página que está causando que el inspector web se ahogue. Dos enfoques que puedo recomendar:

  1. Un verificador de errores en línea, por ejemplo, http://www.onlinewebcheck.com/
  2. Localice el problema eliminando el contenido de la página hasta que cargue el inspector web.
Mi HTML pasa la validación. Mi CSS tiene un "error", que en realidad se debe a que estoy usando un -webkit-prefijo en un selector en particular. Y de nuevo, Web Inspector no falla cuando estoy inspeccionando la página localmente...
Si su servidor/páginas locales usan js/html diferentes o se ejecutan ligeramente diferentes, eso podría explicarlo. Eliminaría gradualmente el contenido de la página para descubrir la causa.
Vea mi actualización: la única diferencia entre local/servidor era que la versión local tenía dos scripts que en realidad no se estaban cargando, así que pensé que esos eran los culpables. Sin embargo, incluso si los cargo localmente, no obtengo el bloqueo.
¿Ya has intentado localizar el problema eliminando el contenido de la página? En mi humilde opinión, es la única forma en que vas a resolverlo.

El bloqueo debería generar un registro de bloqueo. Ya que cada Contenido Web se ejecuta en su propio proceso. Abra /Applications/Utilities/Console.app y escriba WebContent. esto debería mostrarle un informe de bloqueo:

30/01/2014 21:39:20.697 ReportCrash[4191]: informe de bloqueo guardado para com.apple.WebKit.WebContent[331] versión 9537 (9537.73.11) en /Users/UserName/Library/Logs/DiagnosticReports/com. apple.WebKit.WebContent_2014-01-30-213920-1_Mi-Mac.bloqueo

También habrá un botón: ingrese la descripción de la imagen aquíen el que puede hacer clic para obtener más detalles.

en él verás líneas como:

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

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

Application Specific Information:
abort() called

Publique esta sección y el hilo en el que dice que se estrelló. mi ejemplo es el hilo 18

Habrá dos entradas para el hilo. Uno que se parece a esto:

18  com.apple.HIToolbox             0x00007fff8f7cecb7 ReceiveNextEventCommon + 479

y otro mas abajo:

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

Publicar estas secciones aquí puede o no que alguien detecte cuál es el error.

Hm... la pestaña en realidad no parece producir un registro de fallos. No veo nada en Console.app que se refiera a WebContent hasta que cierro manualmente la pestaña bloqueada, que luego genera el mensaje que cité en mi pregunta.
Ok, valió la pena un despeje. Si tiene la inspección web abierta para otra página y luego vaya a esa URL, qué sucede. O si está en la vista de consola del inspector web.
Si hago eso, todo se bloquea antes de que termine de cargarse, por lo que la consola de Web Inspector no tiene la oportunidad de mostrar ningún mensaje. También noté que ninguno de los procesos de "Contenido web de Safari" en el Monitor de actividad se bloquea, así que supongo que es por eso que no hay un registro de fallas.