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