您的位置:程序门 -> linux/unix社区 -> 内核及驱动程序研究区



linux opps了,大家快来看看哪


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


linux opps了,大家快来看看哪
发表于:2008-01-22 18:00:14 楼主
linux出现oops提示:
unable   to   handle   kernel   null   pointer   dereference   at   virtual   address   00000000
pgd   =   c1a58000
[00000000]   *pgd=818f3031,   *pte=00000000,   *ppte=00000000
internal   error:   oops:   17   [#1]
cpu:   0
pc   is   at   .c2u_0fupi+0xc/0x50
lr   is   at   device_iocmd+0x14c/0x11c8
pc   :   [ <c011a108> ]         lr   :   [ <c011c5a4> ]         not   tainted
sp   :   c1b93e54     ip   :   00000000     fp   :   c1b93f3c
r10:   404a7008     r9   :   c1b92000     r8   :   c1b93f04
r7   :   c05de348     r6   :   c05de7dc     r5   :   c1b92000     r4   :   bcbf6780
r3   :   000c6000     r2   :   00000028     r1   :   00000000     r0   :   bcbf6790
flags:   nzcv     irqs   on     fiqs   on     mode   svc_32     segment   user
control:   5317f     table:   81a58000     dac:   00000015
process   vspserver   (pid:   773,   stack   limit   =   0xc1b92198)
stack:   (0xc1b93e54   to   0xc1b94000)
3e40:                                                                                             0000002c   bcbf6780   c1b92000  
3e60:   c05de7dc   c05de348   c011c5a4   c1b93ecc   c1b93ea4   c1b93e80   c0021760   c002b1c4  
3e80:   c05d2518   00000022   c1b93ef8   00000001   00000000   c05d2518   c1b93ec0   c1b93ea8  
3ea0:   c0021bd0   c002b510   c1b93f2c   c1b92000   c1b93f2c   c1b93ef4   c1b93ec4   c0021d10  
3ec0:   c0020458   c1b93f48   c1b92000   c1b93f2c   e1048000   ffffffff   00000001   c1b92000  
3ee0:   00000000   404a7008   c1b93f5c   c1b93ef8   c00205b4   c0021bf4   c1b4c720   00002006  
3f00:   bcbf6780   0000002c   bcbf6790   000c6000   404a7054   c1b4c720   ffffffe7   00002006  
3f20:   bcbf6780   c0020b24   c1b92000   404a7008   c1b93f5c   c1b93f40   c007c298   c011c468  
3f40:   c1b4c720   bcbf6780   00000017   00000000   c1b93f84   c1b93f60   c007c5a4   c007c22c  
3f60:   00000000   c1b93f84   c1b4c720   fffffff7   00002006   00000036   c1b93fa4   c1b93f88  
3f80:   c007c604   c007c2bc   00000001   404c804c   404c705c   00020000   00000000   c1b93fa8  
3fa0:   c00209a0   c007c5d4   404c804c   c0021bf4   00000017   00002006   bcbf6780   bcbf6790  
3fc0:   404c804c   404c705c   00020000   0001aaa8   00000003   404a7054   404a7008   bcbf6808  
3fe0:   4016c788   bcbf6748   400c12b0   40228394   20000010   00000017   e0020099   e59d1008  
backtrace:  
[ <c011c458> ]   (device_iocmd+0x0/0x11c8)   from   [ <c007c298> ]   (do_ioctl+0x7c/0x90)
[ <c007c21c> ]   (do_ioctl+0x0/0x90)   from   [ <c007c5a4> ]   (vfs_ioctl+0x2f8/0x318)
  r7   =   00000000     r6   =   00000017     r5   =   bcbf6780     r4   =   c1b4c720
[ <c007c2ac> ]   (vfs_ioctl+0x0/0x318)   from   [ <c007c604> ]   (sys_ioctl+0x40/0x60)
  r7   =   00000036     r6   =   00002006     r5   =   fffffff7     r4   =   c1b4c720
[ <c007c5c4> ]   (sys_ioctl+0x0/0x60)   from   [ <c00209a0> ]   (ret_fast_syscall+0x0/0x2c)
  r6   =   00020000     r5   =   404c705c     r4   =   404c804c  
code:   1a000037   e2522004   4282c004   4a000026   (e4913004)  
不知道怎么分析,打印出来的那几个项都是什么东西?
发表于:2008-01-22 20:09:151楼 得分:0
从oops的信息看,调用的顺序大致是:

ret_fast_syscall()--> sys_ioctl()--> vfs_ioctl()--> do_ioctl()--> device_iocmd(),应该是device_iocmd()函数中有访问空指针之类。建议在device_iocmd()中定位。其他的信息:如今成vspserver,pc和lr的地址,各寄存器值也可以作为定位的参考,栈的分析可能会困难,建议直接从review代码会更快一点。
发表于:2008-01-22 22:40:422楼 得分:0
你加了什么模块到内核里?
这个新加的最可能出问题
发表于:2008-01-22 23:02:023楼 得分:0
用ksymoops

或者自己照着system.map找crash到什么地方。


快速检索

最新资讯
热门点击