关于panic之LOCKUP

转载 2017年01月03日 16:09:28

配置:

cat /proc/sys/kernel/hung_task_panic    软中断 , 内核中有进程进入了死循环,结束不了,或执行时间过长。

cat /proc/sys/kernel/nmi_watchdog     硬中断

 

PANIC: "Kernel panic - not syncing: Watchdog detected hard LOCKUP on cpu 2"

提示有hard LOCKUP

栈信息如下:

PID: 16104 TASK: ffff880118b8e080 CPU: 2 COMMAND: "bwc_shrinker"
#0 [ffff88002c287b50] machine_kexec at ffffffff81038fa9
#1 [ffff88002c287bb0] crash_kexec at ffffffff810c5992
#2 [ffff88002c287c80] panic at ffffffff81511980
#3 [ffff88002c287d00] watchdog_overflow_callback at ffffffff810e646d
#4 [ffff88002c287d20] __perf_event_overflow at ffffffff8111c357
#5 [ffff88002c287da0] perf_event_overflow at ffffffff8111c924
#6 [ffff88002c287db0] intel_pmu_handle_irq at ffffffff81022e07
#7 [ffff88002c287e90] perf_event_nmi_handler at ffffffff815161a9
#8 [ffff88002c287ea0] notifier_call_chain at ffffffff81517c65
#9 [ffff88002c287ee0] atomic_notifier_call_chain at ffffffff81517cca
#10 [ffff88002c287ef0] notify_die at ffffffff810a12ae
#11 [ffff88002c287f20] do_nmi at ffffffff8151595b
#12 [ffff88002c287f50] nmi at ffffffff81515220
[exception RIP: __read_lock_failed+8]
RIP: ffffffff8128c6a8 RSP: ffff880107f11c08 RFLAGS: 00000097
RAX: 0000000000000297 RBX: 0000000000000077 RCX: 0000000000000082
RDX: 0000000000000297 RSI: 0000000000000202 RDI: ffff88020b7633f4
RBP: ffff880107f11c10 R8: 0000000000000000 R9: 0000000000000000
R10: 00000000ffffffff R11: ffff88006e94a268 R12: ffffffffa0952840
R13: 0000000000000008 R14: ffff88006bd677c8 R15: 0000000000000202
ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
--- <NMI exception stack> ---
#13 [ffff880107f11c08] __read_lock_failed at ffffffff8128c6a8
#14 [ffff880107f11c08] _read_lock_irqsave at ffffffff815149f5
#15 [ffff880107f11c18] combo_clean_blocks_compress at ffffffffa0938126 [bwc]
#16 [ffff880107f11cb8] combo_blocks_compress at ffffffffa093899e [bwc]
#17 [ffff880107f11d58] pool_shrink at ffffffffa09344b0 [bwc]
#18 [ffff880107f11db8] sys_shrink at ffffffffa091b245 [bwc]
#19 [ffff880107f11e18] shrink_helper_main at ffffffffa091b2da [bwc]
#20 [ffff880107f11e38] worker_thread at ffffffff81094b00
#21 [ffff880107f11ee8] kthread at ffffffff8109acd6
#22 [ffff880107f11f48] kernel_thread at ffffffff8100c20a

==========================================================

soft lock_up

之前的panic信息被删除了,栈的大概意思是被NMI watchdog给中断了。

==========================================================

此类问题分析过程:

首先应该确定是hard lock_up还是soft lock_up

----------------------------------------------------------------------------------------------------------

hard lock_up是因为中断被禁掉了,长时间(默认应该是5S)没有打开,这时NMI(Non-maskable interrupt,不可屏蔽中断,简称NMI)

会中断当前进程,这时就要分析,当前进程为什么长时间关闭中断,目前我遇到一种情况:

1. 其他进程拿了锁,忘记放锁,另一个线程调用spin_lock_irqsave(),这个函数是先关闭中断,再去申请锁,如果一直拿不到锁,就会触发NMI。

这种问题的分析过程是这样的,在crash工具中执行foreach bt,把所有的进程栈都打印出来,看是否有进程在锁内的情况,如果有,分析为什么长时间没有放锁,

如果没有进程在锁内,则需要遍历代码,查找所有使用该锁的地方,看是否有忘记放锁的流程。

-------------------------------------------------------------------------------------------------------------

soft lock_up是由于抢占被长时间关闭,系统无法正常调度其他进程。这时NMI watchdog会中断该线程。

这种问题就需要查看代码,看为什么长时间死循环,可能是循环条件一直为真。

相关文章推荐

内核Panic和soft lockup分析及排错

一、概述 众所周知,从事linux内核开发的工程师或多或少都会遇到内核panic,亦或者是soft lockup,前者多半是因为内存泄露、内存互踩、访问空地址等错误导致的,而后者可以肯定是因为代码的逻...
  • luyesy
  • luyesy
  • 2015年08月24日 00:09
  • 4405

OOPS,kernel panic问题解决方法

  • 2016年11月17日 15:13
  • 69KB
  • 下载

soft lockup detected

http://hxboy.blog.163.com/blog/static/176649299201121151531813/ 在修改oss驱动的时候,出现了soft lockup dete...
  • zxygww
  • zxygww
  • 2014年12月12日 20:03
  • 436

Linux Kernel BUG:soft lockup CPU

Linux Kernel BUG:soft lockup CPU 1.线上内核bug日志 kernel: Deltaway too big! 18428729675200069867 ts=184...

linux内核线程死锁或死循环(soft lockup)之后如何让系统宕机重启

在开发内核模块或驱动时,如果处理失误,导致内核线程中出现死锁或者死循环,你会发现,除了重启之外,你没有任何可以做的。这时你的输入不起任何作用,终端(不是指远程的ssh工具)只会在那重复的输出类似“BU...

时间子系统16_soft lockup机制

// 1.debug选项LOCKUP_DETECTOR,开启/关闭kernel中的soft lockup和hard lockup探测 // 2.实现:kernel/watchdog.c // 3.实...

解决类似 BUG: soft lockup - CPU#2 stuck for 67s! 问题的思路

编写内核程序,出现soft lockup错误是再常见不过了,类似BUG: soft lockup - CPU#2 stuck for 67s!。 刚开始调试内核时,出现这样的错误,往往两眼一抹黑,不...

Kernel panic(Attempted to kill init!).zip

  • 2015年01月27日 18:47
  • 461KB
  • 下载

搬家、备份后启动Android PANIC :Could not open D:\java2\android\android-sdk-windows\.android\avdtest.ini问题的解决

附图说明:搬家、备份后启动Android虚拟机出现 PANIC : Could not open D:\java2\android\android-sdk-windows\.android\avd\...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于panic之LOCKUP
举报原因:
原因补充:

(最多只允许输入30个字)