Triple fault
# Triple fault

En la x86 arquitectura de ordenadores, un triple fallo es un tipo especial de excepción generado por la CPU cuando se produce una excepción mientras la CPU está intentando invocar el manejador de excepciones de doble fallo, que a su vez maneja las excepciones que se producen mientras se intenta invocar un manejador de excepciones normal.

Los procesadores x86 que comienzan con el 80286 causarán un ciclo de apagado cuando se encuentre un triple fallo. Esto normalmente hace que el hardware de la placa base inicie un reinicio de la CPU, que, a su vez, hace que todo el ordenador se reinicie.

## Posibles causas de los fallos triples

Los fallos triples indican un problema con el sistema operativo núcleo o controlador de dispositivos. En los sistemas operativos modernos, un triple fallo suele ser causado por un desbordamiento o desbordamiento de búfer en un controlador de dispositivo que escribe sobre la Interrupt Descriptor Table (IDT). Si la IDT se corrompe, cuando se produzca la siguiente interrupción, el procesador no podrá llamar ni al manejador de interrupción necesario ni al manejador de doble fallo porque los descriptores de la IDT están corrompidos.

## Máquinas virtuales

En QEMU, un triple fallo produce un volcado de la máquina virtual en la consola, con el puntero de la instrucción establecido en la instrucción que disparó la primera excepción.

Cuando se utiliza Intel VT-x, un triple fallo provoca la salida de la máquina virtual, con la razón de salida 2. La razón de salida se guarda en el VMCS y puede ser manejada por el software del VMM.

## Otros usos

El procesador Intel 80286 fue el primer procesador x86 en introducir el ahora omnipresente modo protegido. Sin embargo, el 286 no podía volver al "modo real" básico compatible con el 8086 sin reiniciar el procesador, lo que sólo puede hacerse mediante hardware externo a la CPU. En el IBM AT y compatibles, el método documentado para hacerlo era utilizar una función especial en el controlador de teclado Intel 8042, que haría valer el pin RESET del procesador. Sin embargo, se descubrió que el triple fallo intencionado de la CPU hacía que la transición se produjera de forma mucho más rápida y limpia, lo que permitía a los sistemas operativos multitarea cambiar de un lado a otro a gran velocidad.

Algunos kernels de sistemas operativos, como Linux, todavía utilizan los fallos triples como último esfuerzo en su proceso de reinicio si falla un ACPI. Esto se hace poniendo el registro IDT a 0 y luego emitiendo una interrupción. Como la tabla tiene ahora longitud 0, todos los intentos de acceder a ella fallan y el procesador genera un fallo triple.

