(1) from the place where oops crash is located, first find the code line with the pointer Access Error
A) when re-compiling the kernel, select kernel hacking ---> compile the kernel with debug info.
----> Kernel
Debugging
So that the kernel contains debugging information,
B) then find "PC is at" in the oops information.
Free_block + 0x8c/0x168"
######################################## ##################
Unable to handle kernel paging request
Virtual Address 000c0604 // Invalid Pointer address
Pgd= 40004000
[000c0604] * pgd= 00000000
Internal error: Oops: 817 [#1]
Modules linked in:
CPU: 0
Not tainted (BRL. 27.18 #221)
PC is at free_block + 0x78/0x168 // current command address
LR is at release_console_sem + 0x19c/0x1b8 // function return address
######################################## ##################
From system_map, find the free_block address 0x40097ac0 and + 0x78 to get 0x40097b38.
C) run the arm-wrs-linux-gnueabi-armv6jel_vfp-uclibc_small-gdb in the kernel root directory
Vmlinux
The error line is displayed.
[Root @ kqyang-hikvision
Linux-2.6.27_svn_quyong # arm-wrs-linux-gnueabi-armv6jel_vfp-uclibc_small-gdb
Vmlinux
GNU GDB
(Wind River Linux sourcery g ++ 4.3-85) 6.8.50.20080821-CVS
Copyright
(C) 2008 Free Software Foundation, Inc.
License
Gplv3 +: gnu gpl Version 3 or later
This is
Free Software: You are free to change and redistribute it.
There is
No warranty, to the extent permitted by law.
Type "show copying"
And
"Show warranty" for details.
This GDB
Was configured as "-- Host = i686-pc-linux-gnu
-- Target = arm-WRS-Linux-gnueabi ".
For bug
Reporting Instructions, please see:
<Support@windriver.com>...
(GDB) L
* 0x40097b38
0x40097b38 is in free_block (include/Linux/list. h: 93 ).
88 * The Prev/next entries already!
89 */
90 # include <Linux/kernel. h>
91 static inline void _ list_del (struct
List_head * Prev, struct list_head * Next)
92 {
93 next-> Prev = Prev;
94 Prev-> next = next;
95}
96
97 /**
(GDB)
In addition, there is a good article on OOPS analysis. The address is as follows:
Http://blog.chinaunix.net/space.php? Uid = 11134731 & Do = Blog & cuid = 1166585