思路:内核timer有回调函数timer->function,可以由function查到crash的内核模块,找到bug的蛛丝马迹。
ubuntu14 get_next_timer_interrupt处crash
拿到kdump文件,看bt -l
用dis -l 看get_next_timer_interrupt函数
对比kernel源码:
异常代码落在__next_timer_interrupt中的1305行。
应该是内存访问异常,锁定目标是varp->vec + slot的链表访问异常。
由上图,分析得到varp->vec + slot链表的头地址为0xffff88085fa0f2b0
上图所示是timer_list的组织,由hlist链接出来。现在我们从头部开始,挨个查看每个timer
直到
通过timer->function找到定时器的处理函数。
从网上查找tw_timer,发现已经有开发者发现过这个bug:
这个查到是 dccp_time_wait的bug, https://patchwork.kernel.org/patch/8138491/
查了一下ubuntu14的最新内核,已合入了这个补丁。
升级内核解决:
apt-get update apt-get install linux-image-4.4.0-130-generic apt-get install linux-image-extra-4.4.0-130-generic
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。