Articulo de referencia

Excepción de verificación de máquina

Una excepción de comprobación de máquina ( MCE , por sus siglas en inglés) es un tipo de error informático que se produce cuando se detecta un problema relacionado con el hardwa...

Una excepción de comprobación de máquina ( MCE , por sus siglas en inglés) es un tipo de error informático que se produce cuando se detecta un problema relacionado con el hardware del ordenador . En la mayoría de los ordenadores personales de consumo masivo , una MCE indica un hardware defectuoso o mal configurado.

La naturaleza y las causas de los errores de memoria (MCE) pueden variar según la arquitectura y la generación del sistema. En algunos diseños, un MCE siempre es un error irrecuperable que detiene la máquina y requiere un reinicio . En otras arquitecturas, algunos MCE pueden no ser fatales, como los errores de un solo bit corregidos por memoria ECC . En algunas arquitecturas, como PowerPC , ciertos errores de software pueden causar MCE, como un acceso a memoria no válido. En otras arquitecturas, como x86 , los MCE generalmente se originan únicamente en el hardware.

Informes

Sistemas operativos para mainframes de IBM

El sistema operativo IBM System/360 ( OS/360 ) registra los errores de entrada/salida en un conjunto de datos llamado SYS1.LOGREC. Desde entonces, IBM ha acuñado el término conjunto de datos de registro de errores ( ERDS ) para las versiones sucesoras que permiten a la instalación elegir el nombre y para los sistemas operativos que no derivan de OS/360. [ 1 ]

Sistema operativo/360

En OS/360, la instalación puede seleccionar varios niveles de soporte para el manejo de comprobaciones de máquina. El más sofisticado, el Gestor de Comprobaciones de Máquina (MCH), registra los datos de fallos en SYS1.LOGREC e intenta recuperarlos. La instalación puede imprimir estos datos mediante la herramienta de servicio EREP (Programa de Edición e Impresión de Registros Ambientales) o la versión independiente SEREP. El MCH puede gestionar fallos de memoria en secciones de control de núcleo actualizables leyendo una copia nueva de SYS1.ASRLIB y errores de memoria en áreas transitorias de SVC leyendo una copia nueva del módulo SVC de SYS1.SVCLIB.

z/OS

En z/OS, la instalación puede usar un ERDS o definir un flujo de registro de az/OS System Logger [ 2 ] para almacenar los datos de error. Al igual que en OS/360, la instalación usa EREP para imprimir esos datos; SEREP ya no está disponible. El MCH ya no es opcional y maneja muchos más modos de falla que el MCH de OS/360. Para una memoria irrecuperable en el área de paquete de enlace paginable (PLPA), z/OS marca el marco de página como no disponible y marca la página como paginada; la siguiente referencia causará una falla de página, asignando un marco de página diferente.

Microsoft Windows

En las plataformas Microsoft Windows , en caso de un error MCE irrecuperable, el sistema genera un BugCheck, también llamado error STOP o pantalla azul de la muerte .

Las versiones más recientes de Windows utilizan la Arquitectura de Errores de Hardware de Windows (WHEA) y generan el código STOP 0x124, WHEA_UNCORRECTABLE_ERROR. Los cuatro parámetros (entre paréntesis) variarán, pero el primero siempre es 0x0 para un MCE. [ 3 ] Ejemplo:

 DETENER: 0x00000124 (0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000)

Las versiones anteriores de Windows utilizan la arquitectura de comprobación de máquina , con el código de error 0x9C, MACHINE_CHECK_EXCEPTION. [ 4 ] Ejemplo:

 DETENER: 0x0000009C (0x00000030, 0x00000002, 0x00000001, 0x80003CBA)

Linux

En Linux , el kernel escribe mensajes sobre MCE en el registro de mensajes del kernel y en la consola del sistema . Cuando los MCE no son fatales, también se copian normalmente al registro del sistema y/o al registro de systemd . En algunos sistemas, los errores ECC y otros errores corregibles pueden notificarse a través de las funciones de MCE. [ 5 ]

Ejemplo:

 CPU 0: Excepción de comprobación de máquina: 0000000000000004 Banco 2: f200200000000863 Error grave del kernel: el contexto de la CPU está dañado.

Tipos de problemas

Algunos de los principales problemas de hardware que causan errores de hardware múltiples (MCE) incluyen:

Posibles causas

Las excepciones de comprobación de máquina suelen ser un problema de hardware, no de software. A menudo son consecuencia del sobrecalentamiento o la sobreaceleración. En algunos casos, la CPU se apaga automáticamente al superar un límite térmico para evitar daños permanentes. Sin embargo, también pueden deberse a errores de bus provocados por otros componentes defectuosos, como la memoria o los dispositivos de entrada/salida. Las posibles causas incluyen:

  • Refrigeración deficiente de la CPU debido a un disipador de calor y ventiladores de la caja (o filtros) obstruidos con polvo o que se han soltado.
  • Overclocking más allá de la frecuencia máxima a la que la CPU sigue siendo fiable.
  • Placa base defectuosa.
  • Procesador defectuoso.
  • Fallo de memoria.
  • Fallo en los controladores de E/S, ya sea en la placa base o en tarjetas independientes.
  • Dispositivos de E/S defectuosos.
  • Suministro eléctrico inadecuado o defectuoso.
  • Problemas ambientales [ 6 ]
  • Error de hardware inducido por software

Los problemas de refrigeración suelen ser evidentes tras una inspección. Una placa base o un procesador defectuosos pueden identificarse intercambiándolos por piezas que funcionen correctamente. La memoria se puede comprobar arrancando el sistema con una herramienta de diagnóstico, como memtest86 . Los dispositivos y controladores de E/S no esenciales que presenten fallos pueden identificarse desconectándolos, si es posible, o deshabilitándolos para ver si el problema desaparece. Si los fallos suelen producirse poco después de arrancar el sistema operativo, o no se producen en absoluto, o no se producen durante días, podría indicar un problema con la fuente de alimentación. En el caso de un problema con la fuente de alimentación, el fallo suele producirse cuando la demanda de energía alcanza su punto máximo al arrancar el sistema operativo cualquier dispositivo externo.

Decodificación de MCE

Para procesadores IA-32 e Intel 64, consulte el Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 [ 7 ], capítulo 15 (Arquitectura de comprobación de máquina), o el artículo de la Base de conocimientos de Microsoft sobre excepciones de Windows. [ 8 ]

Programas para decodificar MCE de Intel y AMD

  • rasdaemon [ 9 ] es una herramienta de registro RAS ( fiabilidad, disponibilidad y capacidad de servicio ) para Linux . Registra errores de memoria, utilizando los eventos de rastreo EDAC. EDAC es un subsistema del kernel de Linux que gestiona la detección de errores ECC de los controladores de memoria para la mayoría de los chipsets en arquitecturas i386 y x86_64. También existen controladores EDAC para otras arquitecturas como ARM. Se recomienda usar rasdaemon para recopilar información MCE en sistemas Linux porque mcelog quedó obsoleto en 2017. [ 10 ] [ 11 ] [ 12 ] [ 13 ]
  • mcelog [ 14 ] es un demonio de Linux creado por Andi Kleen para gestionar MCE en procesadores x86. mcelog también puede decodificar comprobaciones de máquina. mcelog se considera funcionalmente obsoleto desde 2017. [ 12 ] [ 13 ] El reemplazo de mcelog para sistemas Linux es rasdaemon. [ 10 ] [ 11 ]
  • parsemce [ 15 ] es un programa de Linux creado por Dave Jones para decodificar MCE de procesadores AMD K7 .
  • mced [ 16 ] (mcedaemon) es un programa de Linux creado por Tim Hockin para recopilar MCE del kernel y alertar a las aplicaciones interesadas. Cabe destacar que no intenta interpretar los datos de MCE, simplemente alerta a otros programas.
  • mcat es un programa de línea de comandos para Windows desarrollado por AMD para decodificar MCE de los procesadores AMD K8 , de las familias 0x10 y 0x11 .

Véase también

Referencias

  1. "Capítulo 1. Introducción a EREP" (PDF) . Programa de edición e impresión de registros ambientales (EREP) 3.5 - Guía del usuario (PDF) . IBM . 30 de septiembre de 2021. pág.  1. GC35-0151-50 . Consultado el 20 de febrero de 2023 .
  2. Guía del programador de sistemas para: z/OS System Logger (PDF) . Libros rojos (segunda edición). IBM . Julio de 2007. SG24-6898-01 . Consultado el 20 de febrero de 2023 . 
  3. "Error de comprobación 0x124: WHEA_UNCORRECTABLE_ERROR" . Microsoft. 3 de noviembre de 2022. Consultado el 11 de diciembre de 2022 .
  4. "Error de comprobación 0x9C: MACHINE_CHECK_EXCEPTION" . Microsoft. 14 de diciembre de 2021. Consultado el 11 de diciembre de 2022 .
  5. "mcelog no funciona con procesadores AMD de la familia 16 y superiores en SLES11 SP3" . SuSE. 27 de septiembre de 2022. Consultado el 11 de diciembre de 2022 .
  6. "Advertencia" (PDF) . Principios de funcionamiento de z/Architecture (PDF) (Decimoquinta ed.). IBM . Abril de 2025. págs. 11–17 . SA22-7832-14 . Consultado el 3 de julio de 2025 .  
  7. "Arquitectura de verificación de máquina" . Manual del desarrollador de software de las arquitecturas Intel® 64 e IA-32, Volumen 3B: Guía de programación del sistema, Parte 2. Intel Corporation . Noviembre de 2018.
  8. "Mensaje de error de detención en Windows XP que puede recibir: "0x0000009C (0x00000004, 0x00000000, 0xb2000000, 0x00020151)"" . MSDN . 2015-12-07 . Consultado el 2017-07-13 .
  9. Mauro Carvalho Chehab (mchehab) (2023-02-20). "rasdaemon es una herramienta de registro RAS (Fiabilidad, Disponibilidad y Servicio)" . github.com . Consultado el 2023-02-20 .
  10. 1 2 "Excepción de verificación de máquina" . wiki.archlinux.org . 2021-05-08 . Recuperado el 2023-02-21 .
  11. 1 2 "ECC RAM" . wiki.gentoo.org . 30-12-2022 . Consultado el 21-02-2023 .
  12. 1 2 "x86/mce: Factorizar y descontinuar el controlador /dev/mcelog" . git.kernel.org . 2017-03-28 . Recuperado el 2023-02-21 .
  13. 1 2 "x86/mce: Factorizar y desaprobar el controlador /dev/mcelog" . github.com/torvalds/linux/ . 2017-03-28 . Recuperado el 2023-02-21 .
  14. "mcelog: Manejo avanzado de errores de hardware para Linux x86" . 2015-04-20 . Consultado el 2017-07-13 .
  15. "parsemce: Analizador del controlador de excepciones de comprobación de máquinas Linux" . 22/07/2003 . Consultado el 13/07/2017 .
  16. mcedaemon en GitHub
  • mcelog: Manejo avanzado de errores de hardware para Linux x86
  • parsemce: Analizador del controlador de excepciones de verificación de máquinas Linux