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)
>>