linux下加载驱动出错,请帮忙
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 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
替LZ问一下, 指针异常, 这是怎么看出来的?
不太可能是非法指针操作! 代码有点复杂
[ 本帖最后由 nflx 于 2009-5-9 22:24 编辑 ]
coredump100%是指针问题,否则不会coredump的。
不过没有2.6好,2.4的自己计算哪个指针错误,2.6有符号信息
内核版的a版主有一篇文章提到可以通过coredump信息定位具体出错代码行的,你可以搜搜看
话说Linux的驱动调试真JB麻烦,发现vxworks驱动的人真是幸福
vxworks驱动调试很简单吗?一直都是用logMsg...
Tornado不是一个源码级的调试器吗?而且其IDE非常好用
其实我也只是毕业时碰过,后来再没接触过了
我遇到过很相似的问题,当时也就把驱动里面的全局变量全部去掉,并封装为函数的局部变量(尤其是全局指针),就解决了,LZ可以试试,不过我是用的2.6的linux
kernel panic多半是因为非法指针的操作,贴代码上来
明显是指针操作异常,查查指针是否指向了未做映射的区域或空指针等