美文网首页
dropbear cpu卡死问题

dropbear cpu卡死问题

作者: 叶迎宪 | 来源:发表于2020-07-01 20:20 被阅读0次

    在一块Hi3536的开发板上面,一有ssh连接进来,dropbear经常会cpu飙升到100%,导致ssh无法连接进来。开始以为是dropbear版本的问题,但是换了好几个dropbear版本之后,问题依旧。于是,采用strace跟踪dropbear,发现这时候dropbear一直在循环调用read函数

    read(6, "up, S:01\n # expires at 156946407"..., 4096) = 4096
    read(6, ">, hrtimer_wakeup, S:01\n # expir"..., 4096) = 4096
    read(6, "\n #9: <ebd35e48>, hrtimer_wakeup"..., 4096) = 4096
    read(6, "nsecs\njiffies: 627568\n\ncpu: 3\n c"..., 4096) = 4096
    ...

    一直停不下来。通过lsof,可以看到dropbear进程所有打开的fd
    3427 /usr/local/dropbear /dev/null
    3427 /usr/local/dropbear /dev/null
    3427 /usr/local/dropbear /dev/null
    3427 /usr/local/dropbear socket:[158367]
    3427 /usr/local/dropbear socket:[158368]
    3427 /usr/local/dropbear socket:[163614]
    3427 /usr/local/dropbear /proc/timer_list

    fd为6的是/proc/timer_list。手动cat /proc/timer_list,发现确实会一直输出,停不下来。通过搜索,可以发现以下信息
    https://lore.kernel.org/lkml/20130719152800.GA20792@xiaoyu.lan/
    这是3.10内核timer方面的一个bug,会导致/proc/timer_list一直循环输出

    https://github.com/bvwelch/dropbear/blob/master/random.c
    dropbear打开/proc/timer_list主要是为了产生随机数

    解决办法:一、升级linux内核;二、修改dropbear源码,注释掉读取/proc/timer_list

    相关文章

      网友评论

          本文标题:dropbear cpu卡死问题

          本文链接:https://www.haomeiwen.com/subject/fzghqktx.html