Linuxでの死からの復活とは何ですか?ソフトモデルありますか?

Linuxでの死からの復活とは何ですか?ソフトモデルありますか?

https://github.com/torvalds/linux/blob/bf272460d744112bacd4c4d562592decbf0edf64/arch/x86/kernel/cpu/mce/core.c#L1543

    if ((m.cs & 3) == 3) {
        /* If this triggers there is no way to recover. Die hard. */
        BUG_ON(!on_thread_stack() || !user_mode(regs));

前述のように、死者の中で復活とは何ですか?ソフトデスとは何ですか?

BUG_ON() が実行されても、残りのコードは引き続き実行されますか?

ベストアンサー1

「死者の復活」とは、糸を殺すことを意味します。実行を継続するのではなく(おそらく失敗の結果を返す)、呼び出しコードは正常に終了/続行するように処理できます。 @don-amanが述べたBUG FAQでは、

    BUG_ON( condition );

同じですか?

   if ( condition )
        BUG();

したがって、条件がfalseの場合、BUG_ONはトリガーされずにコードが実行され続けることがありますif。したがって、直接core.cテストすることもできます。BUG()

>>cat h.c
#include <stdio.h>

#define BUG() __asm__ __volatile__("ud2\n")

int main()
{
        printf ("hi\n");
        BUG();
        printf ("ho\n");
}
>>cc -o h h.c
>>./h
hi
Illegal instruction (core dumped)
>>

おすすめ記事