免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8274 | 回复: 14
打印 上一主题 下一主题

[硬件及驱动] unable to handle kernel paging request at virtual address [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-24 10:38 |只看该作者 |倒序浏览
求助各位大神     我现在的一个视频传输的项目    在运行一段时间后    就会卡住 死机    串口的打印信息如下:
Unable to handle kernel paging request at virtual address 01010101
s3c-fimc s3c-fimc.0: irq is in capture state
s3c-fimc s3c-fimc.0: irq is being handled by frame hander
s3c-fimc s3c-fimc.0: irq flag is x
s3c-fimc s3c-fimc.0: irq is in capture state
s3c-fimc s3c-fimc.0: irq is being handled by frame hander
s3c-fimc s3c-fimc.0: irq flag is last
pgd = c0004000
[01010101] *pgd=00000000<7>s3c-fimc s3c-fimc.0: irq is in capture stat
e
s3c-fimc s3c-fimc.0: irq is being handled by frame hander
s3c-fimc s3c-fimc.0: irq flag is x

Internal error: Oops: 5 [#2]
Modules linked in: rt5370sta
CPU: 0    Tainted: G      D     (2.6.28.6 #25
PC is at __d_lookup+0x110/0x144
LR is at d_lookup+0x34/0x50
pc : [<c00acfc8>]    lr : [<c00ad030>]    psr: 20000013
sp : cc0e7d40  ip : cc0e7d70  fp : cc0e7d6c
r10: 00c1c008  r9 : cc0e7dc7  r8 : 00000004
r7 : cc0e7dd4  r6 : ce8011b0  r5 : 01010101  r4 : 00000042
r3 : 00004275  r2 : c3c595c0  r1 : 00007fff  r0 : ce8011b0
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 00c5387d  Table: 5c0a8008  DAC: 00000015
Process client (pid: 1224, stack limit = 0xcc0e6260)
Stack: (0xcc0e7d40 to 0xcc0e8000)
7d40: cc0e7d64 00000042 cc0e7dd4 ce8011b0 c04d80c0 cf515200 00000000 0
0000000
7d60: cc0e7d8c cc0e7d70 c00ad030 c00acec4 cc0e7dd4 ce8011b0 00000000 c
f515200
7d80: cc0e7da4 cc0e7d90 c00ad0d4 c00ad008 ffffffff cf3c09c0 cc0e7e0c c
c0e7da8
7da0: c00d7c00 c00ad058 20000013 00000000 000004c8 cf003400 cc0e6000 2
0000013
7dc0: cc0e7de4 310e7dd0 00343232 c0185ca8 cf428b60 00c1c008 00000004 c
c0e7dc7
7de0: c0180bd4 ffffffff cf3c09c0 cc0e7e48 cf3c0340 00000000 c04ff228 c
04ff218
7e00: cc0e7e3c cc0e7e10 c004efdc c00d7b7c cc0e7e3c ffffffff cf3c09c0 c
c0e7e48
7e20: cf3c0340 cf3c09b8 00000000 cf3c0aa0 cc0e7e5c cc0e7e40 c0050650 c
004efa4
7e40: 00000009 cf3c0ab4 cc0e7e48 cc0e7e48 cc0e7e7c cc0e7e60 c0050794 c
0050034
7e60: 00000009 000000b4 cc0e7ed0 cc0e6000 cc0e7ebc cc0e7e80 c005a2f0 c
005070c
7e80: cc0e7e0c cc0a4530 cc0e7fb0 cc0a4540 00000000 cc0e6000 c002df68 c
c0e7fb0
7ea0: 00000000 c002df68 cc0e6000 00000000 cc0e7f9c cc0e7ec0 c00305a4 c
005a014
7ec0: ce816790 cc0e7ee8 cf3c0c04 cc0e7ed8 00000009 00000000 00000000 0
0000000
7ee0: 00000000 cf3c7814 3aecb16e 00000000 ce8017e0 ce8017e8 00000002 0
0000002
7f00: 4001f000 ce801cf0 cc0e7f24 00000000 00000000 ce8168b0 cc0e7f44 0
0000000
7f20: 00000000 00000000 00000000 c002df68 000173dc 00000080 cc0e7fa4 c
c0e7f48
7f40: c006b16c c006a774 00000000 00000000 ffffffff 00000000 cf3a6c80 0
0000000
7f60: cc0e7fa4 cc0e7f70 c009e0d0 c009e8ec 00000000 00000000 000173dc 4
16a8930
7f80: 000000f0 c002df68 cc0e6000 00000000 cc0e7fac cc0e7fa0 c0030a78 c
0030558
7fa0: 00000000 cc0e7fb0 c002de0c c0030a58 fffffe00 00000080 00000000 0
0000000
7fc0: 00000000 000173dc 416a8930 000000f0 416a7d98 00017344 000173e4 0
00003ff
7fe0: 00000000 416a7d98 40033b94 40033bb8 80000010 000173dc ff3eff7f 3
fdfedff
Backtrace:
[<c00aceb8>] (__d_lookup+0x0/0x144) from [<c00ad030>] (d_lookup+0x34/0
x50)
[<c00acffc>] (d_lookup+0x0/0x50) from [<c00ad0d4>] (d_hash_and_lookup+
0x88/0x8c)
r7:cf515200 r6:00000000 r5:ce8011b0 r4:cc0e7dd4
[<c00ad04c>] (d_hash_and_lookup+0x0/0x8c) from [<c00d7c00>] (proc_flus
h_task+0x90/0x260)
r5:cf3c09c0 r4:ffffffff
[<c00d7b70>] (proc_flush_task+0x0/0x260) from [<c004efdc>] (release_ta
sk+0x44/0x334)
[<c004ef98>] (release_task+0x0/0x334) from [<c0050650>] (do_exit+0x628
/0x6d
[<c0050028>] (do_exit+0x0/0x6d from [<c0050794>] (do_group_exit+0x94
/0xc
[<c0050700>] (do_group_exit+0x0/0xc from [<c005a2f0>] (get_signal_to
_deliver+0x2e8/0x32
r7:cc0e6000 r6:cc0e7ed0 r5:000000b4 r4:00000009
[<c005a008>] (get_signal_to_deliver+0x0/0x32 from [<c00305a4>] (do_s
ignal+0x58/0x500)
[<c003054c>] (do_signal+0x0/0x500) from [<c0030a78>] (do_notify_resume
+0x2c/0x30)
[<c0030a4c>] (do_notify_resume+0x0/0x30) from [<c002de0c>] (work_pendi
ng+0x1c/0x20)
Code: eb0b4bc5 e5955000 e3550000 0a000006 (e5953000)
求助各位大神     是什么问题呢

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
2 [报告]
发表于 2014-03-24 11:10 |只看该作者
Unable to handle kernel paging request at virtual address 01010101
这个地址明显有问题,不像个正常地址

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
3 [报告]
发表于 2014-03-24 12:42 |只看该作者
内存混乱问题,不好直接看出原因的,建议先将自己的内核模块,或者内核修改过的部分,逐个还原,排查问题所在。

论坛徽章:
0
4 [报告]
发表于 2014-03-24 15:09 |只看该作者
什么问题啊?回复 2# arm-linux-gcc


   

论坛徽章:
0
5 [报告]
发表于 2014-03-24 15:10 |只看该作者
会不会是驱动的问题呢   Modules linked in: rt5370sta回复 3# humjb_1983


   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
6 [报告]
发表于 2014-03-24 15:28 |只看该作者
r9sf3 发表于 2014-03-24 15:10
会不会是驱动的问题呢   Modules linked in: rt5370sta回复 3# humjb_1983

这是有可能的,所以建议你先将添加的驱动卸掉。

论坛徽章:
0
7 [报告]
发表于 2014-03-25 15:53 |只看该作者
我重新烧了板子,又把程序跑了几遍,依然是在跑一段时间以后图像就会卡死,
if((queue_receive[consumer_idx]->frame_number>0)&&(queue_receive[consumer_idx]->frame_number<=1024))
                {
                        while(totalreceive<(RCV_NUM*int_buf_rcv_num[consumer_idx]))
                        {
                                totalreceive%=(RCV_NUM*int_buf_rcv_num[consumer_idx]);
                                hasreceive=recv(connsock,(char *)queue_receive[consumer_idx]+totalreceive,RCV_NUM,0);
                                //hasreceive=recvfrom(listensock,(char *)queue_receive[consumer_idx]+totalreceive,RCV_NUM,0,&serveraddr,&len);
                                if(hasreceive)
                                {
                                        totalreceive+=hasreceive;
                                }
                                //printf("hasreceive=%d,totalreceive=%d\n",hasreceive,totalreceive);
                        }

                        printf("queue_receive[%d],receive_size=%d ok,hasreceive=%d\n",consumer_idx,totalreceive,hasreceive);
                        totalreceive%=(1024*int_buf_rcv_num[consumer_idx]);

                        consumer_idx++;
                        consumer_idx %= SHARED_BUF_NUM;

                        sem_post(&full);

                }
                else
                {
                        printf("index[%d],frame_number=%d,frame_size =%d\n",consumer_idx,queue_receive[consumer_idx]->frame_number,queue_receive[consumer_idx]->size);
                        printf("receive error\n\n");
                        totalreceive=0;
                        sem_post(&empty);
                }

根据串口的打印消息,应该是在这一段有问题,当queue_receive[consumer_idx]->frame_number在0到1024范围外时,接收错误,图像卡死,不知道你觉得是不是硬件的问题呢
humjb_1983 发表于 2014-03-24 15:28
这是有可能的,所以建议你先将添加的驱动卸掉。

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
8 [报告]
发表于 2014-03-25 19:24 来自手机 |只看该作者
打印数组时一定要进行越界判断,尤其是在异常处理区域。
你定义了两个信号量:full, empty. 这就是说如果程序一直处理<1024范围内时就会一直hold 信号量empty, 如果程序一直处理超出1024范围的数据时就一直hold信号量full.这是你有意设计成这样?

论坛徽章:
0
9 [报告]
发表于 2014-03-25 20:55 |只看该作者
这是师兄留给我的,因为新手,所以我也还没看明白回复 8# linuxfellow


   

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
10 [报告]
发表于 2014-03-25 21:34 来自手机 |只看该作者
本帖最后由 linuxfellow 于 2014-03-25 21:36 编辑

Sorry, delete duplicated reply
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP