这是Linux内核崩溃吗?我该如何解决?

时间:2015-03-31 07:38:34

标签: linux-kernel crash embedded-linux

我们正在测试在嵌入式Linux上运行的防火墙应用程序。在测试期间的某个时刻,linux挂起(冻结),我们在控制台上看到以下内容:

TCHDOG: eth0 (fsl-gianfar): transmit queue 0 timed out
------------[ cut here ]------------ WARNING: at net/sched/sch_generic.c:279 Modules linked in: CPU: 0 PID: 0 Comm:
swapper/0 Not tainted 3.12.19-rt30-gc29fe1a #27 task: c08f9300 ti:
effea000 task.ti: c093a000 NIP: c052a98c LR: c052a98c CTR: c0327948
REGS: effebe60 TRAP: 0700   Not tainted  (3.12.19-rt30-gc29fe1a) MSR:
00029000 <CE,EE,ME>  CR: 44044022  XER: 20000000

GPR00: c052a98c effebf10 c08f9300 0000003f c128c484 c128c9d0 c0328b54
00021000  GPR08: 00000001 00000001 0099b000 00000312 24044024 0f003103
effea000 c07f6f28  GPR16: 00000100 00200000 c0940000 c08f0000 001631a5
00000000 000000a4 ffffffff  GPR24: 00000000 00000000 effea000 00000004
c0940000 c0940000 c74d0000 00000000  NIP [c052a98c]
dev_watchdog+0x2dc/0x2ec LR [c052a98c] dev_watchdog+0x2dc/0x2ec Call
Trace: [effebf10] [c052a98c] dev_watchdog+0x2dc/0x2ec (unreliable)
[effebf40] [c005194c] call_timer_fn.isra.29+0x28/0x84 [effebf60]
[c0051b28] run_timer_softirq+0x180/0x1fc [effebfa0] [c004a5e8]
__do_softirq+0x100/0x1cc [effebff0] [c000d6e8] call_do_softirq+0x24/0x3c [c093be60] [c0004920] do_softirq+0x90/0xb8
[c093be80] [c004afb4] irq_exit+0xa4/0xc8 [c093be90] [c0009c10]
timer_interrupt+0x1a4/0x1d0 [c093bec0] [c000f594]
ret_from_except+0x0/0x18
--- Exception: 901 at arch_cpu_idle+0x24/0x5c
    LR = arch_cpu_idle+0x24/0x5c [c093bf80] [c00ac4ec] rcu_idle_enter+0xac/0xec (unreliable) [c093bf90] [c0086b00]
cpu_startup_entry+0x120/0x170 [c093bfc0] [c08a97a8]
start_kernel+0x2f0/0x304 [c093bff0] [c00003fc] skpinv+0x2e8/0x324
Instruction dump: 4e800421 80fe0204 4bffff44 7fc3f378 4bfe72e5
7fc4f378 7c651b78 3c60c085  7fe6fb78 38632bf0 4cc63182 48184835
<0fe00000> 39200001 993c9c37 4bffffb4 
---[ end trace d3f58d6e7db83823 ]---

是内核崩溃吗?是什么造成的?我该如何解决?如果您需要任何其他信息,请与我们联系。

2 个答案:

答案 0 :(得分:3)

不,它不是内核崩溃。

来自内部看门狗定时器的警告通知,监视飞思卡尔Gianfar以太网驱动程序的传输工作。

该消息表示驱动程序已将一个帧排队等待传输,并超时从Ginafar硬件获取传输确认中断(或其他指示)。

这可能是驱动程序问题 - 但它很可能是硬件问题(例如以太网MAC卡住)。

顺便说一下,消息的内容表明你的系统在看门狗定时器发生时没有做任何事情(空闲)。

答案 1 :(得分:1)

由于我们/我不知道,在没有深入研究代码的情况下,您究竟做了什么。但是,这里尝试分析一下;)

这条线 WARNING: at net/sched/sch_generic.c:279 Modules linked in: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.12.19-rt30-gc29fe1a 显示一些内核数据旁边(not tainted表示您没有加载闭源驱动程序)崩溃发生here。堆栈跟踪也验证了这也是原因。虽然这条线本身并不太有用(对我来说,我没有进入内核源代码),但它表明net调度程序失败了。如果您的防火墙以某种方式搞砸了它,您应该开始在那里搜索。

如果没有,您可能遇到过实际的内核错误。如果可能,首先要做的是更新您的版本。写作时有3.19和4.1可用。如果这没有帮助(或者你真的需要这个版本),你可以file a kernel bug。由于你的内核没有受到污染,你可以期待开发者的帮助。祝你好运:)