一次奇怪的 kernel panic 解决,但求甚解 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
drlittlemouse
V2EX    Linux

一次奇怪的 kernel panic 解决,但求甚解

  •  
  •   drlittlemouse 2015-10-23 00:31:01 +08:00 4431 次点击
    这是一个创建于 3728 天前的主题,其中的信息可能已经有所发展或是发生改变。

    楼主的一台 Linode ,运行好好的突然就 kernel panic 了,不能重启,重启有很大概率无法启动成功的概率大概小于 1%,不要问我怎么计算的,的确进去过一次...

    首先说频繁重启肯定是 Lassie 狗的原因,检测到系统没有启动就会尝试 reboot ,这并不是问题

    问题在于看到 dmesg 的一瞬间楼主就傻了,贴一小段出来:

    Entering non-interactive startup
    Calling the system activity data collector (sadc)...
    ipset: Loaded with no configuration
    ip6tables: Applying firewall rules: [ OK ]^M
    iptables: Applying firewall rules: [ OK ]^M
    Bringing up loopback interface: [ OK ]^M
    Bringing up interface eth0: BUG: unable to handle kernel NULL pointer dereference at 0000000000000030

    这是在说 eth0 无法启动啊?不过楼主非常确信没有改过网卡的配置。

    于是改为 Single 模式启动, Lish 进去,先检查了一下配置信息,看起来都没什么问题,然后楼主就在拼命回忆之前修改了哪些配置,然并卵,因为很久没重启过了已然记不清了。

    没办法,只好先禁用一部分启动项,把和网络有关的都 chkconfig off 掉了,改回正常运行模式,重启,喵了个咪,起来了!

    于是非常确定嫌犯就在这些启动项里面,最后逐个排查的结果(点重启点到手断),居然是 iptables 导致的!

    于是尝试清空了 iptables 的全部规则,重新 chkconfg iptables on ,重启,没问题!

    那么问题必然出在规则上面了!

    楼主尝试添加了之前删除的规则,没问题! service iptables save 重启!擦,又特喵的挂了!

    那么这几条规则到底是什么呢?还是贴一小部分出来:

    -A PREROUTING -p tcp -m multiport --dports 60000:60199 -j REDIRECT --to-ports XXXX
    -A PREROUTING -p udp -m multiport --dports 60000:60199 -j REDIRECT --to-ports XXXX
    -A PREROUTING -p tcp -m multiport --dports 60200:60399 -j REDIRECT --to-ports XXXX
    -A PREROUTING -p udp -m multiport --dports 60200:60399 -j REDIRECT --to-ports XXXX

    其实就是个范围端口重定向,看起来很正常啊,不过只要 iptables 启动的时候有这些规则,必死无疑。

    想到这里的时候,楼主本来都准备放弃治疗了,干脆启动后动态载入这些规则罢了。

    不过奇迹的瞬间就这么来了,楼主最后一次超载了智商,突然想起来,前几天修改过 sysctl 里面的一个参数 net.ipv4.ip_local_port_range

    赶紧打开配置文件看,现在是 net.ipv4.ip_local_port_range = 1024 65535

    难道是这个端口范围和我的重定向存在冲突?赶紧修改为 1024 59999 ( 60000 以后的楼主都做了重定向),保存全部规则,重启,妥了。

    那么问题来了,且问各位看官,端口重定向为何会引发 kernel panic ?
    和 ip_local_port_ranged 的冲突又是怎么形成的?

    第 1 条附言    2015-10-23 09:11:50 +08:00
    刚才重新验证发现思路有误,其实根本不是 net.ipv4.ip_local_port_range 的问题,重启后再次出现了无法启动的问题

    看了一下 /etc/rc3.d 下面的启动顺序,发现 iptables 、 ip6tables 的启动在 network 之前

    调整一下放在 network 后面启动,无论怎样重启都没问题了。
    7 条回复    2015-10-23 12:56:48 +08:00
    msg7086
        1
    msg7086  
       2015-10-23 00:42:15 +08:00
    我这默认是 32768 61000 啊,怎么会改到那么奇怪的数字的……。
    其实你这个说不定是个 bug ,去 kernel 那边报一下?
    应该是最新版 kernel 吧。
    drlittlemouse
        2
    drlittlemouse  
    OP
       2015-10-23 00:45:19 +08:00
    @msg7086 Linode 自带的不算新吧, 4.1.5 啊
    所以我暂时没有考虑是 kernel 的 bug
    pyKun
        3
    pyKun  
       2015-10-23 00:59:49 +08:00
    楼主试试改成 1024: 60398 有错没
    pyKun
        4
    pyKun  
       2015-10-23 01:00:58 +08:00
    看错了,请忽略上条...
    ceyes
        5
    ceyes  
       2015-10-23 01:07:52 +08:00
    eth0: BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
    空指针解引用,然后内核挂了。
    这当然是 kernel 的 bug 啊, consle.log 里应该有不少的 Call Trace 吧。

    建议换 kernel 试试,排除下先么。

    要求甚解,就仔细读 Call Trace 或 配 kdump 抓 vmcore 慢慢研究,或者找到稳定的重现步骤,报 bug 给 upstream 让他们去研究也是极好的。
    drlittlemouse
        6
    drlittlemouse  
    OP
       2015-10-23 05:58:44 +08:00
    @ceyes 今天晚些时候我切换成 Release 版本内核尝试一下,现在用的是 L 记的优化内核。
    carmark
        7
    carmark  
       2015-10-23 12:56:48 +08:00
    发个 kernel dump 吧,这种要通过 crash core 和代码综合分析了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2973 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 14:10 PVG 22:10 LAX 06:10 JFK 09:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86