1) find the address of "init_task_union" from your /proc/ksyms file.
2) find the offset of "next_task" in "struct task_struct". with egcs,
the offset is 0x34 (*)
3) find the offset of "pid" in "struct task_struct". with egcs, the
offset is 0x5c (*)
4) get the pid of the hung netscape-communicator.
5) gdb --core /proc/kcore
now you can walk the task list, and when you have found netscape, you
dump the complete 8 kB structure.
The stack is at the end of the structure.
6) convert it into a format that ksymoops understands.
7) pipe it through ksymoops.
I think it's a bit difficult to do that by hand, but a program that
walks the process list and dump the stack of all uninterruptible
processes might be a good thing.
(*) I found these offset my disassembling vmlinux: gdb vmlinux; x/30i cap_set_pg: at the end of the function, there should be a line "mov 0x34(%?),%?" x/10i proc_sel: the pid is loaded into a register, and then tested if it's zero.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to firstname.lastname@example.org Please read the FAQ at http://www.tux.org/lkml/