私が例示する問題を解決するための多くの解決策を見ます
不正な命令(コアダンプ)
しかし、それはどういう意味なのでしょうか。何がそのエラーを生成し、その根本的な原因は何ですか? CPUが命令であると信じている誰かを取得していますが、デコードできませんか?そのエラーを生成するために内部で何が起こりますか?
dmesg
から
[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]
x86の場合。この画面上のエラーは、カーネルから送信されたSIGILL
が「CPU kernel/traps.c
をキャッチするためにX86_TRAP_UD
で定義されたトラップ。これは、 いくつかのクラスの1つであり、CPUから直接発生する他のいくつか を含みます。
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
娯楽のために、ここでゴルフでこれを実証するプログラムの リストを見ることができます