Internal error: Oops: 17报错怎么查

freehotel 2009-07-19 03:49:36
一个关于硬盘测试的拷机程序,在跑了3天后出现以下问题。
虽然也google了一下,但还是不太明白该如何下手。看提示好像是内核的问题。但到底是内核里的插入的驱动模块的问题,还是上层应用程序的问题呢?应该怎样查找呢?
特别的是,它不是在我插入某个具体的.KO驱动后出现的,而是在程序连续跑了3天后出现的,何解?
请大家帮忙拉,谢谢。
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 17 [#5]
Modules linked in: fcap100_tw2835_m2 ffgpio ds1307 ftmac100 usbhid usb_storage f
otg2xx_drv usbcore fmjpeg_drv fmpeg4_drv fmcp422_drv favc_drv favc_common fcap10
0_tw2835 fcap1 fcap0 fcap_common snd_fi2s_tw2835_c0 snd_ftssp010 tw2835 ftsdc010
cpe_wdt tve_tw2835 ct656 fi2c apb_dma
CPU: 0
PC is at dequeue_task+0xc/0x78
LR is at deactivate_task+0x24/0x30
pc : [<c0b115dc>] lr : [<c0b118e4>] Tainted: P
sp : c369973c ip : c369974c fp : c3699748
r10: 000090e6 r9 : 719d1dc0 r8 : c369991c
r7 : c39255a0 r6 : c39255a0 r5 : c0b182d8 r4 : c39255a0
r3 : ffffffff r2 : 00000000 r1 : 00000000 r0 : c39255a0
Flags: nzCv IRQs off FIQs on Mode SVC_32 Segment user
Control: 397F Table: 02850000 DAC: 00000015
Process sh (pid: 1769, stack limit = 0xc3698194)
Stack: (0xc369973c to 0xc369a000)
9720: c369975c
9740: c369974c c0b118e4 c0b115e0 000090e6 c3699798 c3699760 c0d10b8c c0b118d0
9760: c39255d4 c3698000 0086c935 c39256c8 c3698000 00000000 c39255a0 ffffffff
9780: c369991c c36998d4 0000000b c36997b8 c369979c c0b182d8 c0d109b0 c39255a0
。。。发帖长度限制,此处省略。

Backtrace:
[<c0b115d0>] (dequeue_task+0x0/0x78) from [<c0b118e4>] (deactivate_task+0x24/0x3
0)
[<c0b118c0>] (deactivate_task+0x0/0x30) from [<c0d10b8c>] (schedule+0x1ec/0x694)
r4 = 000090E6
[<c0d109a0>] (schedule+0x0/0x694) from [<c0b182d8>] (do_exit+0xd0/0xc28)
[<c0b18208>] (do_exit+0x0/0xc28) from [<c0b03d28>] (die+0x264/0x2a0)
[<c0b03ac4>] (die+0x0/0x2a0) from [<c0b059c0>] (__do_kernel_fault+0x6c/0x7c)
[<c0b05954>] (__do_kernel_fault+0x0/0x7c) from [<c0b05d10>] (do_page_fault+0x230
/0x250)
r7 = C36998D4 r6 = C36998D4 r5 = C39255A0 r4 = FFFFFFFF
[<c0b05ae0>] (do_page_fault+0x0/0x250) from [<c0b05e7c>] (do_DataAbort+0x3c/0xa0
)
[<c0b05e40>] (do_DataAbort+0x0/0xa0) from [<c0afe2e0>] (__dabt_svc+0x40/0x60)
r8 = C3699AFC r7 = C39255A0 r6 = C39255A0 r5 = C3699908
r4 = FFFFFFFF
[<c0b115d0>] (dequeue_task+0x0/0x78) from [<c0b118e4>] (deactivate_task+0x24/0x3
0)
[<c0b118c0>] (deactivate_task+0x0/0x30) from [<c0d10b8c>] (schedule+0x1ec/0x694)
r4 = 000090E6
[<c0d109a0>] (schedule+0x0/0x694) from [<c0b182d8>] (do_exit+0xd0/0xc28)
[<c0b18208>] (do_exit+0x0/0xc28) from [<c0b03d28>] (die+0x264/0x2a0)
[<c0b03ac4>] (die+0x0/0x2a0) from [<c0b059c0>] (__do_kernel_fault+0x6c/0x7c)
[<c0b05954>] (__do_kernel_fault+0x0/0x7c) from [<c0b05d10>] (do_page_fault+0x230
/0x250)
r7 = C3699AB4 r6 = C3699AB4 r5 = C39255A0 r4 = FFFFFFFF
[<c0b05ae0>] (do_page_fault+0x0/0x250) from [<c0b05e7c>] (do_DataAbort+0x3c/0xa0
)
[<c0b05e40>] (do_DataAbort+0x0/0xa0) from [<c0afe2e0>] (__dabt_svc+0x40/0x60)
r8 = C3699CDC r7 = C39255A0 r6 = C39255A0 r5 = C3699AE8
r4 = FFFFFFFF
[<c0b115d0>] (dequeue_task+0x0/0x78) from [<c0b118e4>] (deactivate_task+0x24/0x3
0)
[<c0b118c0>] (deactivate_task+0x0/0x30) from [<c0d10b8c>] (schedule+0x1ec/0x694)
r4 = 000090E6
[<c0d109a0>] (schedule+0x0/0x694) from [<c0b182d8>] (do_exit+0xd0/0xc28)
[<c0b18208>] (do_exit+0x0/0xc28) from [<c0b03d28>] (die+0x264/0x2a0)
[<c0b03ac4>] (die+0x0/0x2a0) from [<c0b059c0>] (__do_kernel_fault+0x6c/0x7c)
[<c0b05954>] (__do_kernel_fault+0x0/0x7c) from [<c0b05d10>] (do_page_fault+0x230
/0x250)
r7 = C3699C94 r6 = C3699C94 r5 = C39255A0 r4 = FFFFFFFF
[<c0b05ae0>] (do_page_fault+0x0/0x250) from [<c0b05e7c>] (do_DataAbort+0x3c/0xa0
)
[<c0b05e40>] (do_DataAbort+0x0/0xa0) from [<c0afe2e0>] (__dabt_svc+0x40/0x60)
r8 = C0EF4CC0 r7 = C39255A0 r6 = C39255A0 r5 = C3699CC8
r4 = FFFFFFFF
[<c0b115d0>] (dequeue_task+0x0/0x78) from [<c0b118e4>] (deactivate_task+0x24/0x3
0)
[<c0b118c0>] (deactivate_task+0x0/0x30) from [<c0d10b8c>] (schedule+0x1ec/0x694)
r4 = 000090E6
[<c0d109a0>] (schedule+0x0/0x694) from [<c0b18df0>] (do_exit+0xbe8/0xc28)
[<c0b18208>] (do_exit+0x0/0xc28) from [<c0b03d28>] (die+0x264/0x2a0)
[<c0b03ac4>] (die+0x0/0x2a0) from [<c0b059c0>] (__do_kernel_fault+0x6c/0x7c)
[<c0b05954>] (__do_kernel_fault+0x0/0x7c) from [<c0b05d10>] (do_page_fault+0x230
/0x250)
r7 = C093B59C r6 = C3699E74 r5 = C39255A0 r4 = FFFFFFEC
[<c0b05ae0>] (do_page_fault+0x0/0x250) from [<c0b05e7c>] (do_DataAbort+0x3c/0xa0
)
[<c0b05e40>] (do_DataAbort+0x0/0xa0) from [<c0afe2e0>] (__dabt_svc+0x40/0x60)
r8 = 00000000 r7 = C39255A0 r6 = 001458C1 r5 = C3699EA8
r4 = FFFFFFFF
[<c0b115d0>] (dequeue_task+0x0/0x78) from [<c0b118e4>] (deactivate_task+0x24/0x3
0)
[<c0b118c0>] (deactivate_task+0x0/0x30) from [<c0d10b8c>] (schedule+0x1ec/0x694)
r4 = 000090E6
[<c0d109a0>] (schedule+0x0/0x694) from [<c0b19d40>] (do_wait+0xbfc/0xcd0)
[<c0b19144>] (do_wait+0x0/0xcd0) from [<c0b19edc>] (sys_wait4+0x38/0x44)
[<c0b19ea4>] (sys_wait4+0x0/0x44) from [<c0afe7a0>] (ret_fast_syscall+0x0/0x2c)
r4 = 0028D3D0
Code: e89da800 e1a0c00d e92dd800 e24cb004 (e5913000)
...全文
3958 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcm0616 2009-10-02
  • 打赏
  • 举报
回复
I'm curious about the bug. Did you find the reason of the issue.
could you tell me the finally solution to fix it.
zjp662 2009-08-10
  • 打赏
  • 举报
回复
来学习
ShowMan 2009-07-20
  • 打赏
  • 举报
回复
kernel mode中访问了非法地址,
datacode 2009-07-20
  • 打赏
  • 举报
回复
软件、硬件环境?
pottichu 2009-07-20
  • 打赏
  • 举报
回复
当程序访问超出实际物理内存的时候,就会产生页故障,也就是调用do_page_fault()。

也就是说,你的 驱动有问题,访问了非法地址。
freehotel 2009-07-20
  • 打赏
  • 举报
回复
恩啊 谢谢LS的
我也在找反汇编的工具 不太会用 菜鸟啊~~
chenee543216 2009-07-20
  • 打赏
  • 举报
回复
LDD中有描述如何查找这类错误,但是各个平台的kernel不一样。
我也是菜鸟尽量把自己知道的列出来供大家讨论,如果有错误的地方,请大家指出。
------------------首先这些打印是kernel的panic函数列出的,具体意义可以直接找到kernel代码去看,很有帮助。
Unable to handle kernel NULL pointer dereference at virtual address 00000000
-------------------------^^^^^^^空指针错误,这个一般就是非法地址访问,至于为什么导致非法,请关注PC周围的代码逻辑。有必要的话就printk出来。
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 17 [#5] ------17代表什么?要在你的手册或kernel代码中查,null pointer??
Modules linked in: fcap100_tw2835_m2 ffgpio ds1307 ftmac100 usbhid usb_storage f
otg2xx_drv usbcore fmjpeg_drv fmpeg4_drv fmcp422_drv favc_drv favc_common fcap10
0_tw2835 fcap1 fcap0 fcap_common snd_fi2s_tw2835_c0 snd_ftssp010 tw2835 ftsdc010
cpe_wdt tve_tw2835 ct656 fi2c apb_dma
CPU: 0
PC is at dequeue_task+0xc/0x78 --------当前pc指针,这个十分有用!可以将kernel反汇编,然后找dequeue_task的相对位置0xc处
LR is at deactivate_task+0x24/0x30
-----------------以下为当前寄存器值,也有帮助。
pc : [ <c0b115dc>] lr : [ <c0b118e4>] Tainted: P
sp : c369973c ip : c369974c fp : c3699748
r10: 000090e6 r9 : 719d1dc0 r8 : c369991c
r7 : c39255a0 r6 : c39255a0 r5 : c0b182d8 r4 : c39255a0
r3 : ffffffff r2 : 00000000 r1 : 00000000 r0 : c39255a0
Flags: nzCv IRQs off FIQs on Mode SVC_32 Segment user
Control: 397F Table: 02850000 DAC: 00000015
Process sh (pid: 1769, stack limit = 0xc3698194)
Stack: (0xc369973c to 0xc369a000)
9720: c369975c
9740: c369974c c0b118e4 c0b115e0 000090e6 c3699798 c3699760 c0d10b8c c0b118d0
9760: c39255d4 c3698000 0086c935 c39256c8 c3698000 00000000 c39255a0 ffffffff
9780: c369991c c36998d4 0000000b c36997b8 c369979c c0b182d8 c0d109b0 c39255a0
。。。发帖长度限制,此处省略。

-----------------以下是调用堆栈,可以看到程序的流程,便于跟踪。
Backtrace:
[ <c0b115d0>] (dequeue_task+0x0/0x78) from [ <c0b118e4>] (deactivate_task+0x24/0x3
0)
[ <c0b118c0>] (deactivate_task+0x0/0x30) from [ <c0d10b8c>] (schedule+0x1ec/0x694)
r4 = 000090E6
[ <c0d109a0>] (schedule+0x0/0x694) from [ <c0b182d8>] (do_exit+0xd0/0xc28)
[ <c0b18208>] (do_exit+0x0/0xc28) from [ <c0b03d28>] (die+0x264/0x2a0)
[ <c0b03ac4>] (die+0x0/0x2a0) from [ <c0b059c0>] (__do_kernel_fault+0x6c/0x7c)
[ <c0b05954>] (__do_kernel_fault+0x0/0x7c) from [ <c0b05d10>] (do_page_fault+0x230
/0x250)
r7 = C36998D4 r6 = C36998D4 r5 = C39255A0 r4 = FFFFFFFF
[ <c0b05ae0>] (do_page_fault+0x0/0x250) from [ <c0b05e7c>] (do_DataAbort+0x3c/0xa0
)
[ <c0b05e40>] (do_DataAbort+0x0/0xa0) from [ <c0afe2e0>] (__dabt_svc+0x40/0x60)
r8 = C3699AFC r7 = C39255A0 r6 = C39255A0 r5 = C3699908
r4 = FFFFFFFF
[ <c0b115d0>] (dequeue_task+0x0/0x78) from [ <c0b118e4>] (deactivate_task+0x24/0x3
0)
。。。。。。。。。。。。。。。。。。。。。。。。。
freehotel 2009-07-20
  • 打赏
  • 举报
回复
硬件和插入的那些驱动模块,基本是别的厂商提供的。
freehotel 2009-07-20
  • 打赏
  • 举报
回复
网络卡了下 不是故意重复回帖的~
各位有什么信息的 还能帮助下
freehotel 2009-07-20
  • 打赏
  • 举报
回复
恩 谢谢各位的回复
诶 郁闷之~
freehotel 2009-07-20
  • 打赏
  • 举报
回复
恩 谢谢各位的回复
诶 郁闷之~
pottichu 2009-07-20
  • 打赏
  • 举报
回复
其实通常情况都可以通过 Backtrace 定位出错误所在函数的,
只是你这个Backtrace很奇怪, 是在进程调度的时候挂的,
实在看不出问题所在。
freehotel 2009-07-20
  • 打赏
  • 举报
回复
恩 谢谢各位
那如何查找这个问题呢?所加载的驱动模块一个个去看吗?比较难看出来的吧。
有没有什么调试工具可以定位呢?
morris88 2009-07-19
  • 打赏
  • 举报
回复
是你自己写的程序还是系统提供的?
你是自己设计的硬件还是别的厂商提供的?

4,466

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧