- 论坛徽章:
- 0
|
回复 2# MagicBoy2010
你好,用你的方法试了下,把do_fork中的CLONE_UNTRACED flag移除,重新编译内核。然后我用gdb对内核线程进行栈回溯,线程pid=1跟踪如下,
Attaching to program: /sbin/init, process 1
warning: process 1 is a cloned process
Reading symbols from /lib64/libcrypt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libcrypt.so.1
Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libc.so.6...
(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld.so.1
0x00000055616e7960 in wait () from /lib64/libc.so.6
(gdb) #0 0x00000055616e7960 in wait () from /lib64/libc.so.6
#1 0x0000000120041144 in ?? ()
warning: GDB can't find the start of the function at 0x120041143.
GDB is unable to find the start of the function at 0x120041143
and thus can't determine the size of that function's stack frame.
This means that GDB may be unable to access that stack frame, or
the frames below it.
This problem is most likely caused by an invalid program counter or
stack pointer.
However, if you think GDB should simply search farther back
from 0x120041143 for code which looks like the beginning of a
function, you can increase the range of the search using the `set
heuristic-fence-post' command.
其它的内核线程回溯不了吗?
|
|