[Crash-utility] Problem with "xm save" x86-64 cores - crash.4.0-3.5

Tejasvi Aswathanarayana tejasvia at gmail.com
Wed Oct 4 18:50:41 UTC 2006


> So, for starters, can you display how "pid_hash" is
> declared in your kernel?
>
static struct hlist_head *pid_hash[PIDTYPE_MAX];


> This is the code sequence in task_init() that selects
> refresh_hlist_task_table() or refresh_hlist_task_table_v2():
>
>       } else {
>               tt->pidhash_addr = symbol_value("pid_hash");
>               if (!get_array_length("pid_hash", NULL, sizeof(void *)) &&
>                   VALID_STRUCT(pid_link))
>                       tt->refresh_task_table = refresh_hlist_task_table_v2;
>               else
>                       tt->refresh_task_table = refresh_hlist_task_table;
>       }

Yes, refresh_hlist_task_table is being selected, but because the "if"
clause itself was failing.

get_array_length("pid_hash",...)  = 1
VALID_STRUCT(pid_link)  = 0
VALID_MEMBER(pid_link_pid) = 0
VALID_MEMBER(pid_hash_chain)) = 0

	if (VALID_MEMBER(pid_link_pid) && VALID_MEMBER(pid_hash_chain)) {
			get_symbol_data("pid_hash", sizeof(ulong), &tt->pidhash_addr);
                	tt->refresh_task_table = refresh_pid_hash_task_table;
        } else {

> Alternatively, if you want to make the vmlinux/dumpfile pair
> available to me, I can take a look at it.
Thanks, I will see how I can get you the files.

> Another thing to check -- there are two places that print that
> "cannot determine..." error message.  Can you verify that it's
> happening in refresh_hlist_task_table()?  That's where the
> previous reporter said that it happened on his system, but I
> just want to make absolutely sure.

I confirmed that the error message "crash: cannot determine pid_hash
array dimensions " was  from the refresh_hlist_task_table() function

-- 
Thanks
-Tejasvi




More information about the Crash-utility mailing list