I see a lot of solutions to resolving the problem exemplified by
Illegal instruction (core dumped)
But, I'm wondering what exactly that means? What generates that error, and what's the root cause of it? Is that the CPU getting someone it believes is an instruction but can't decode? What happens under the hood to generate that error?
From dmesg
, I see
[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]
test
program under a debugger? There are several possible causes for SIGILL (a totally random illegal instruction due to memory errors, aud2
instruction intentionally inserted by the compiler, or a library function intentionally posting that signal), and it may be useful to see the actual instruction and stack trace that caused it. – Mark Plotnick Sep 24 '18 at 11:32