El incidente 'The Deathray' expone una vulnerabilidad crítica en macOS donde un WebGPU shader malicioso puede inducir un bucle infinito en la GPU, llevando a la inanición de recursos del WindowServer y, eventualmente, a un kernel panic y reinicio del sistema. La causa raíz es la incapacidad del sistema operativo para preemptar o terminar de manera robusta un shader de GPU que entra en un bucle infinito, especialmente cuando se ejecuta código no confiable a través de WebGPU.
La cascada de fallo comienza con el compute shader que entra en un bucle infinito, copiando datos repetidamente en un buffer. El vertex shader, que depende del mismo buffer, queda bloqueado. Esta contención de recursos de la GPU se propaga al WindowServer de macOS, que también necesita la GPU para renderizar la interfaz de usuario. Cuando el WindowServer se vuelve irresponsivo, el Watchdog del sistema lo detecta y, tras un tiempo de espera, fuerza un kernel panic y el reinicio del sistema.
Las salvaguardas existentes, como la validación de entrada para detectar bucles infinitos (implementada tras un incidente similar con WebGL en 2023), fallaron en este caso. El autor señala que la detección de bucles infinitos es un problema irresoluble (halting problem), lo que subraya la necesidad de mecanismos de preemption más robustos. La arquitectura de los chips M-series, donde la gestión de la GPU es delegada a un coprocesador (ASC) y su firmware, podría ser un factor que dificulta la implementación de dicha preemption a nivel del kernel del OS, a diferencia de otros sistemas operativos que manejan esto correctamente.