O que exatamente significa “Instrução ilegal (core dumped)”? [duplicado]

0

Eu vejo muitas soluções para resolver o problema exemplificado por

Illegal instruction (core dumped)

Mas, eu estou querendo saber o que exatamente isso significa? O que gera esse erro e qual é a causa raiz disso? É que a CPU está recebendo alguém que acredita ser uma instrução, mas não consegue decodificar? O que acontece sob o capô para gerar esse erro?

De dmesg , vejo

[429572.598803] traps: test[4054] trap invalid opcode ip:400066 sp:ffac8cc0 error:0 in test[400000+1000]
[429758.598292] traps: test[4401] trap invalid opcode ip:400066 sp:ffa3f990 error:0 in test[400000+1000]
[430066.170626] traps: test[4854] trap invalid opcode ip:400066 sp:ff8ab000 error:0 in test[400000+1000]
[430439.855002] traps: test[5212] trap invalid opcode ip:8048071 sp:ffce2fa0 error:0 in test[8048000+1000]
    
por Evan Carroll 24.09.2018 / 12:12

1 resposta

1

Para o x86. Esse erro na tela parece ser o resultado de SIGILL sendo enviado pelo kernel, que é um "CPU Trap" definido em kernel/traps.c para capturar X86_TRAP_UD . É um em uma classe de alguns outros que são levantados diretamente da CPU que inclui,

X86_TRAP_DE,        divide_error
X86_TRAP_NMI,       nmi
X86_TRAP_BR,        bounds
X86_TRAP_UD,        invalid_op
X86_TRAP_NM,        device_not_available
X86_TRAP_OLD_MF,    coprocessor_segment_overrun
X86_TRAP_TS,        invalid_TSS
X86_TRAP_NP,        segment_not_present
X86_TRAP_SS,        stack_segment
X86_TRAP_GP,        general_protection
X86_TRAP_SPURIOUS,  spurious_interrupt_bug
X86_TRAP_MF,        coprocessor_error
X86_TRAP_AC,        alignment_check
X86_TRAP_XF,        simd_coprocessor_error

Para diversão, você pode ver uma lista de programas demonstrando isso com o Golf aqui

    
por 24.09.2018 / 12:23