我正在写一个Linux模块(内核编程),我得到了:
“无法处理内核空指针取消引用”
这是什么意思?
答案 0 :(得分:5)
听起来像是一个当前具有NULL值(零)的指针被取消引用。在解除引用之前为指针分配地址。
e.g。
int x = 5;
int * x_ptr = NULL;
x_ptr = &x; // this line may be missing in your code
*x_ptr += 5; //can't dereference x_ptr here if x_ptr is still NULL
答案 1 :(得分:4)
内核试图从地址0
读取,你的内核显然特别对待它(好东西!)。由于内核无法像我们从用户模式应用程序(那些会收到Segmentation Fault)那样直接杀死自己,因此这个错误是致命的。它可能会panic'ed并向您显示该消息。
答案 2 :(得分:4)
这意味着内核试图使用空指针。这会生成一个无法在内核中处理的页面错误 - 如果它正在运行用户任务(但在内核空间中),它通常会产生一个“不正确”的“糟糕”,它会(当前)杀死当前任务并可能泄漏内核资源。如果它在某些其他情况下,例如一个中断,它通常会引起内核恐慌。