昨天,在运行我的应用程序时,我在控制台syslog
广播中看到,这看起来像内核恐慌并且控制台变得无法响应。今天,我注意到我可以使用putty
连接到服务器,当我运行uptime
时显示系统已启动几天。当我运行dmesg
时,我看到oom_killer
日志和Oops
日志,但我预计我会看到系统重新启动,dmesg
清除内核恐慌的任何痕迹。所以现在我很困惑,是否有内核恐慌?如果是,那么为什么我可以连接到服务器,而系统似乎没有重新启动(它已经持续了几天)。如果不是,那我怎么能连接到服务器呢?在手动重启服务器之前,服务器是否应该被冻结?
答案 0 :(得分:0)
不,这是不可能的。正如对问题的评论中所提到的,Oops不是内核恐慌,oom杀手杀死了内存耗尽的进程,因为这个进程绕过内核网络堆栈(以自己的方式实现它)我得到了oom日志。令我感到困惑的是,如果我用
制作一个测试程序int * p = new int[(unsigned int)-1];
我会得到std::bad_alloc
而不是oom杀手。您可以在此处找到更多信息:
http://bl0rg.krunch.be/oom-frag.html
https://unix.stackexchange.com/questions/1660/what-is-a-kernel-panic