El mensaje de error que has recibido procede directamente del núcleo del sistema operativo: advierte de una corrupción inesperada de la memoria. Obviamente, esto no debería ocurrir. 0xdeadbeef es efectivamente un "número mágico" común, pero aparece aquí por una razón muy específica.
En concreto, este mensaje de error proviene de zalloc (un asignador de memoria basado en zonas) dentro del kernel. El kernel es la parte del sistema operativo que se ejecuta en "modo privilegiado", lo que significa, a grandes rasgos, que tiene acceso total al ordenador. Sus propias aplicaciones se ejecutan en un modo limitado que le da menos acceso al ordenador. Como parte de su funcionamiento, el núcleo utiliza la memoria RAM para almacenar y procesar información. Para llevar la cuenta de qué partes de la RAM se utilizan realmente, el núcleo utiliza muchos asignadores diferentes. El asignador de memoria basado en zonas es especial, ya que sólo lo utiliza el propio núcleo (es decir, no las aplicaciones) y sólo asigna bloques de RAM de tamaños específicos y fijos. Por ejemplo, puede asignar bloques de 256, 512 y 1024 bytes, pero no asignará un bloque de 300 bytes. Esto se hace para que el asignador sea más sencillo y, por tanto, más rápido.
La parte de la cookie del mensaje de error se refiere a una característica relacionada con la seguridad, en la que los punteros (direcciones de memoria) en el kernel se "envenenan" combinándolos (con XOR) con una cookie. La cookie es simplemente un número aleatorio elegido al arrancar el ordenador. Esto asegura que estas direcciones de memoria parezcan aleatorias, y no sean predecibles por los virus/malware que aprovechan los fallos para acceder a recursos privilegiados.
Una funcionalidad específica del asignador basado en zonas es que cuando el kernel libera la memoria (es decir, declara que ya no tiene uso para un trozo de memoria asignado), no sólo anota que está libre para otro uso - sino que también sobrescribe el puntero de memoria con el número mágico 0xdeadbeef. Esto sirve para dos propósitos: (1) si el kernel utiliza erróneamente la memoria después de haberla liberado, seguir el puntero no "funcionaría" o "apuntaría a otros datos que se corromperían" - sino que desencadenaría una interrupción de error del sistema, ya que la dirección 0xdeadbeef está mapeada para asegurar que eso ocurra, (2) si al asignador se le pide más tarde una nueva asignación y quiere repartir el mismo bloque de nuevo, puede detectar si fue cambiado, lo que significa que hay un bug o error de hardware en alguna parte.
En tu caso, el mensaje de error indica que (2) ha ocurrido - así que algo ha alterado parte de la RAM de tu ordenador que el kernel pensaba que estaba marcada como no utilizada. La causa de este tipo de corrupción de memoria suele ser un error del kernel, un error de extensión del kernel de terceros o un error de hardware.
Si el problema es un fallo del kernel, probablemente no tengas otra forma de solucionarlo que esperar a una nueva actualización de Apple o bajar a una versión anterior de macOS. Si esto sucede una vez en una luna azul, entonces sólo tiene que esperar a la próxima actualización. Si ocurre con frecuencia, puedes intentar averiguar qué hiciste exactamente para provocar el error y evitar hacerlo en el futuro, o bajar a una versión anterior de MacOS que no tenga el error.
Si el problema es un fallo de una extensión del kernel de terceros, yo comprobaría si hay actualizaciones de todas las extensiones del kernel que tienes instaladas. Las extensiones del kernel suelen instalarse como controladores para hardware de terceros, o para aplicaciones especiales que cambian el funcionamiento del sistema a bajo nivel. Esto podría ser, por ejemplo, software de virtualización (como VMware) o software como Little Snitch o similar. Siempre es una buena idea desconectar cualquier hardware de terceros y no arrancar dichas aplicaciones de bajo nivel y comprobar si el fallo desaparece - luego volver a conectar una cosa a la vez hasta que tengas el problema.
Si el problema es un error de hardware, realmente no tienes otra opción que hacer que el hardware sea reemplazado. Por lo general, este tipo de errores son causados por módulos de memoria RAM defectuosos. También podría ser un problema térmico o de la placa lógica, pero no suele ser el caso. Utilice el Apple Hardware Test para comprobar si sus módulos de RAM tienen errores.
En el caso extremo este error podría ser causado por un virus, pero definitivamente buscaría otras razones primero. Un virus o malware normalmente intenta mantener su existencia oculta, por lo que no estaría provocando mensajes de error como estos (y causando bloqueos del sistema). Sin embargo, es posible que un error en un virus desencadene estos mensajes de error, similar a los errores en las extensiones del kernel no maliciosas.
4 votos
@nohillside No creo que la pregunta sea poco clara en absoluto, tengo una respuesta que me gustaría añadir...
0 votos
@jksoegaard Aunque estaría bien un poco más de detalles en la pregunta, ¡espero tu aportación!