2015-03-31 282 views
1

我们正在测试在嵌入式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 ]--- 

它是一个内核崩溃?是什么造成的?我如何解决它?如果您需要其他信息,请告诉我。

+0

这确实是内核崩溃。 – 0andriy 2015-04-01 15:09:13

+0

这次事故的原因是什么?如何解决它? – Jay 2015-04-02 03:38:15

+0

尝试重现最新的内核,即4.0-rc6。 – 0andriy 2015-04-02 10:45:56

回答

2

不,它不是内核崩溃。

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

该消息意味着驱动程序已排队一帧用于传输,并且超时从Ginafar硬件发送传输确认中断(或其他指示)。

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

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

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。堆栈跟踪证实这也是原因。虽然这一行本身不是太有用(对我来说,我没有进入内核源代码),但它显示了网络调度程序失败。如果你的防火墙不知何故与它混淆,你应该开始在那里搜索。

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