miércoles, julio 28, 2010

Curioso kernel panic de MacOS X 10.6.4 con Flash Player

Llevo un tiempo teniendo un problema con un Macbook Pro i5 y el Snow Leopard, 10.6.4, en forma de kernel panic. Es la primera versión en casi siete años de uso de MacOS que tengo un problema de este tipo, y he estado investigando un poco cual puede ser la causa. El problema se produce justo cuando se selecciona una ventana del navegador, donde se está ejecutando el flash player, y se produce de manera totalmente aleatoria.

Lo primero que hay que saber que cuando en un Apple con microprocesador Intel se produce un kernel panic, esta información se almacena en la nvram de la máquina y posteriormente, durante el proceso de arranque del sistema, se almacenará en un fichero en el directorio /Library/Logs/DiagnosticReports con nombres que comienzan con Kernel_

Todos los kernel panic son similares, Page Fault, con un volcado de registros similar al siguiente:

Tue Jul 20 14:13:34 2010
panic(cpu 0 caller 0x2a8ab2): Kernel trap at 0x00000000, type 14=page fault, registers:
CR0: 0x80010033, CR2: 0x00000000, CR3: 0x00100000, CR4: 0x000006e8
EAX: 0x106e9e80, EBX: 0x00000000, ECX: 0x0000000c, EDX: 0x1073e000
CR2: 0x00000000, EBP: 0x924d3c08, ESI: 0x1073e000, EDI: 0x460df000
EFL: 0x00010246, EIP: 0x00000000, CS:  0x00000008, DS:  0x00ac0010
Error code: 0x00000010

Viendo un poco el resto del fichero de kernel panic me llama la atención el siguiente fragmento que es común a todos los kernel panic que me ha dado la máquina:

      Kernel Extensions in backtrace (with dependencies):
         com.apple.driver.AppleIntelHDGraphics(6.1.6)@0x11f6000->0x12a2fff
            dependency: com.apple.iokit.IOPCIFamily(2.6)@0x926000
            dependency: com.apple.iokit.IONDRVSupport(2.1)@0x959000
            dependency: com.apple.iokit.IOGraphicsFamily(2.1)@0x937000

BSD process name corresponding to current thread: WebKitPluginHost

El proceso que siempre se produce el problema está involucrado dicho proceso. Este proceso hace de contenedor para plugins de Safari que están compilados de 32 bits, se puedan usar desde el navegador de 64 bits, entre otros, el flash player. Buscando más información di con varios hilos en la página web de los foros de Apple, Apple Discussions,donde había gente con el mismo problema, y exactamente el mismo kernel panic. Había un denominador común en todos ellos: usamos un monitor conectado al Macbook Pro a través del puerto mini display port.

Una cosa muy interesante de la última hornada de Macbook Pro y de Snow Leopard es la posibilidad de activar una de las dos tarjetas gráficas que tiene, la nVidia o la Intel. Curiosamente, el volcado de pila que nos da el kernel panic implica el driver de la tarjeta de la intel com.apple.driver.AppleIntelHDGraphics.

Parece ser que hay algún tipo de bug en el conjunto de rutinas que se encarga de activar ambas tarjetas gráficas que lo levanta el plugin del Flash player que se está ejecutando dentro del proceso WebKitPluginHost. Esto es un error bastante grave de Apple, ya que un proceso de usuario, está causando un problema en todo el sistema, con lo cual sugiere que el aislamiento del sistema con ese API no es el adecuado, pudiendo ser un posible vector de ataque.

He reportado el bug a Apple, tanto a través de su página Bug Reporter, aparte de de la página de feedback del Macbook Pro.

Resumen

  • Sólo se produce cuando hay otra pantalla conectada a través del mini display port.
  • Siempre se produce al seleccionar la pantalla del Safari.
  • El stack trace que me da el kernel panic siempre es el mismo.
  • El módulo que aparece en el stack trace siempre es el com.apple.driver.AppleIntelHDGraphics.
  • Podría ser un problema de seguridad.

Technorati Tags:

2 comentarios:

Dani dijo...

Aquí uno a quien también le pasa exactamente lo mismo. Buscando por Google he encontrado tu entrada. Tengo un MBP Core i5 conectado por mdp a un Cinema Display.

Me figuraba que el problema venía por lo de las gráficas. He probado también a que únicamente trabaje con la gráfica dedicada (opción en preferencias/economizador) pero también ocurre.

Es curioso pero solo pasa con el Safari.

Saludos y a ver si lo solucionan.

Snafu dijo...

Comentar que me acaba de pasar esto mismo justo hoy, el primer KP en lo que va de año, tras actualizar a Safari 5.0.3. Mi máquina es un Mac Pro de la generación del 2006, y estoy con OS X 10.6.5. En mi caso, los detalles sobre la GPU se refieren a la ATI (con DVI), única tarjeta en el aparato, por lo que creo que el tema Intel-nVidia podría no ser un factor.