Re: nonexistent swap file? 2.2.13ac3

Manfred Spraul (manfreds@colorfullife.com)
Sun, 05 Dec 1999 18:18:43 +0100


Ingo Oeser wrote:
>
> along with an netscape-communicator uninteruptible sleeping
> inside "down_failed".
>
> Any ideas?
>
> I still have this netscape process hanging around, so we can
> debug it easily. But normal gdb couldn't attach to it :(
>
normal gdb is enough, although I don't know if the results are worth the
effort:

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.

--
	Manfred

(*) 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 majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/