Hariharan S Reddy wrote:
Hi Dave,
Further debugging, I found that tt->max_tasks are set properly, but where
as tt->running_tasks is set to 2, it is not incremented as expected in
function refresh_hlist_task_table_v2().
Regards
Hariharan T.S.
Yeah, it's only finding/counting your pid 0 swapper tasks.
It appears that the pid_hash array entries are pointing
to the hlist_node embedded in a pid_namespace-related
upid structure. For example:
crash> p pid_hash[120]
$12 = {
first = 0xffff81001f8f4348
}
Here's a upid, with its hlist_node at the end:
crash> upid -o
struct upid {
[0] int nr;
[8] struct pid_namespace *ns;
[16] struct hlist_node pid_chain;
}
SIZE: 32
So the container address of the hlist_node would be:
crash> eval 0xffff81001f8f4348 - 16
hexadecimal: ffff81001f8f4338
...
which looks right:
crash> upid ffff81001f8f4338
struct upid {
nr = 5,
ns = 0xffffffff813aa900,
pid_chain = {
next = 0x0,
pprev = 0xffff81000106edc0
}
}
crash> sym 0xffffffff813aa900
ffffffff813aa900 (D) init_pid_ns
crash>
Time for refresh_hlist_task_table_v3()...
And, for that matter, a bunch of other stuff has been
broken in crash for 2.6.24, like "kmem -s" and "kmem -f".
And since x86_64 has moved the mem_map page array
to vmalloc() space (a la ia64), a bunch of other
stuff has crapped out as well.
But I'll look into tackling the pid handling first.
Thanks,
Dave