[Crash-utility] crash: cannot resolve "init_task_union"

Dave Anderson anderson at redhat.com
Thu Jan 4 15:32:34 UTC 2007


Sachin,

This may require help from the IBM ppc64 people out there,
but it appears that the issue at hand has something to do
with the uniprocessor aspect.

Your vmlinux is an SMP kernel, but I'm guessing that the wrong
choice of "runq" addresses is being made below:

        if (symbol_exists("per_cpu__runqueues") &&
            VALID_MEMBER(runqueue_idle)) {
                runqbuf = GETBUF(SIZE(runqueue));
                for (i = 0; i < nr_cpus; i++) {
                        if ((kt->flags & SMP) && (kt->flags & PER_CPU_OFF)) {
                                runq = symbol_value("per_cpu__runqueues") +
                                        kt->__per_cpu_offset[i];
                        } else
                                runq = symbol_value("per_cpu__runqueues");

                        readmem(runq, KVADDR, runqbuf,
                                SIZE(runqueue), "runqueues entry (per_cpu)",
                                FAULT_ON_ERROR);
                        tasklist[i] = ULONG(runqbuf + OFFSET(runqueue_idle));
                        if (IS_KVADDR(tasklist[i]))
                                cnt++;

I don't know what your "kt->flags" is showing at the
decision point above, but if you hack the code and force
it to select the "other" runq value, does it work OK?

When CONFIG_SMP is not configured into the kernel, then
the direct value of "per_cpu__runqueues" is used, whereas
with SMP kernels, the appropriate offset needs to be
applied.  At least that's how it works (has worked?) with
the other architectures.

Dave

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20070104/0a476672/attachment.htm>


More information about the Crash-utility mailing list