免费注册 查看新帖 |

Chinaunix

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

linux下加载驱动出错,请帮忙 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-08 11:03 |只看该作者 |倒序浏览
PowerPC 环境下,linux  内核 2.4.26 ,  测试自已写的驱动时(驱动采用-static 编译),出现下列错误:

Oops: kernel access of bad area, sig: 11
NIP: C004B034 XER: 20000000 LR: C0005A3C SP: C09D9F20 REGS: c09d9e70 TRAP: 0300
   Not tainted
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
DAR: 00000004, DSISR: 20000000
TASK = c09d8000[27] 'sh' Last syscall: 63
last math c09d8000 last altivec 00000000
GPR00: C0005A3C C09D9F20 C09D8000 0000000A 00000001 00000000 00000000 FEFEFEFF
GPR08: 7F7F7F7F C09D9F50 C004B014 200004E4 840004E4 100B20A0 00000000 00000000
GPR16: 00000000 00000000 00000000 00000000 00009032 009D9F40 00000000 C0005C88
GPR24: C00059E0 00000001 100AFBB8 0000000A 00000000 00000000 00000001 FFFFFFF7
Call backtrace:
00000001 C0005A3C 1004DEFC 1004D1E0 1001FAFC 100248E0 10023BD4
100201AC 1001FA58 10013B8C 10011044 0FEDAF70 00000000
Oops: kernel access of bad area, sig: 11
NIP: C00191A4 XER: 20000000 LR: C0019178 SP: C09D9D40 REGS: c09d9c90 TRAP: 0300
   Not tainted
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
DAR: 000021E0, DSISR: 20000000
TASK = c09d8000[27] 'sh' Last syscall: 63
last math c09d8000 last altivec 00000000
GPR00: 00000000 C09D9D40 C09D8000 00000000 C0400000 00000066 C09D5000 C01C2D04
GPR08: C02CB440 C01603F0 00000000 00000001 00000000 100B20A0 00000000 00000000
GPR16: 00000000 00000000 00000000 00000000 00009032 009D9E60 00000000 C0005C88
GPR24: 00000000 C0180000 C0140000 C0140000 0000000B C09D8000 C013E780 000021E0
Call backtrace:
C0019178 C0005E14 C000FAD4 C000F8C4 C0005C88 00000001 C0005A3C
Inconsistency detected by ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Asser
tion `! "bad dynamic tag"' failed!
Inconsistency detected by ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Asser
tion `! "bad dynamic tag"' failed!
Inconsistency detected by ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Asser
tion `! "bad dynamic tag"' failed!
Inconsistency detected by ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Asser
tion `! "bad dynamic tag"' failed!
Inconsistency detected by ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Asser
tion `! "bad dynamic tag"' failed!
init: /bin/sh respawning too fast
Inconsistency detected by ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Asser
tion `! "bad dynamic tag"' failed!
init: /bin/sh respawning too fast

是什么原因引起上述错误呢?  请高手分析一下原因,谢谢!

[ 本帖最后由 nflx 于 2009-5-8 11:19 编辑 ]

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [报告]
发表于 2009-05-08 12:48 |只看该作者
kernel panic多半是因为非法指针的操作,贴代码上来

论坛徽章:
0
3 [报告]
发表于 2009-05-08 14:33 |只看该作者
明显是指针操作异常,查查指针是否指向了未做映射的区域或空指针等

论坛徽章:
5
4 [报告]
发表于 2009-05-08 14:39 |只看该作者

回复 #3 garyv 的帖子

替LZ问一下, 指针异常, 这是怎么看出来的?

论坛徽章:
0
5 [报告]
发表于 2009-05-08 15:10 |只看该作者
不太可能是非法指针操作! 代码有点复杂

[ 本帖最后由 nflx 于 2009-5-9 22:24 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-05-08 21:20 |只看该作者
coredump100%是指针问题,否则不会coredump的。
不过没有2.6好,2.4的自己计算哪个指针错误,2.6有符号信息

论坛徽章:
0
7 [报告]
发表于 2009-05-10 21:13 |只看该作者
内核版的a版主有一篇文章提到可以通过coredump信息定位具体出错代码行的,你可以搜搜看
话说Linux的驱动调试真JB麻烦,发现vxworks驱动的人真是幸福

论坛徽章:
0
8 [报告]
发表于 2009-05-10 21:40 |只看该作者

回复 #7 sep 的帖子

vxworks驱动调试很简单吗?一直都是用logMsg...

论坛徽章:
0
9 [报告]
发表于 2009-05-10 23:36 |只看该作者
原帖由 想飞的蜗牛 于 2009-5-10 21:40 发表
vxworks驱动调试很简单吗?一直都是用logMsg...

Tornado不是一个源码级的调试器吗?而且其IDE非常好用
其实我也只是毕业时碰过,后来再没接触过了

论坛徽章:
0
10 [报告]
发表于 2009-05-11 15:20 |只看该作者

回复 #4 yidou 的帖子

我遇到过很相似的问题,当时也就把驱动里面的全局变量全部去掉,并封装为函数的局部变量(尤其是全局指针),就解决了,LZ可以试试,不过我是用的2.6的linux
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP