![「違法命令(コアダンプ)」とは、どういう意味ですか? [コピー]](https://linux33.com/image/11385/%E3%80%8C%E9%81%95%E6%B3%95%E5%91%BD%E4%BB%A4%EF%BC%88%E3%82%B3%E3%82%A2%E3%83%80%E3%83%B3%E3%83%97%EF%BC%89%E3%80%8D%E3%81%A8%E3%81%AF%E3%80%81%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E6%84%8F%E5%91%B3%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
私は次の問題に対する多くの解決策を見ています。
無効なコマンド(コアダンプ)
しかし、これが正確に何を意味するのか疑問に思います。このエラーは何が起こり、根本的な原因は何ですか? 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]
答え1
x86用。この画面のエラーは、catchで定義されている「CPUトラップ」であるSIGILL
カーネルによって送信された結果であるようです。 A級の一つですkernel/traps.c
X86_TRAP_UD
他の複数の人以下を含む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
エンターテイメントのために見ることができます。ゴルフでこれを示すプログラムのリストは次のとおりです。