[Crash-utility] crash aborts with cannot determine idle task

Chandru chandru at in.ibm.com
Sat Apr 5 15:20:10 UTC 2008


Dave Anderson wrote:
> As I suggested before, you're going to have to determine why
> the tasklist[i] is bogus.  The first things to determine are:
>
> (1) what "nr_cpus" was calculated to be, and
> (2) whether the SMP and PER_CPU_OFF flags are set in kt->flags.
>
> If those variables/settings make sense, then presumably the
> problem is in the determination of the per-cpu offset values.
> That's done in a machine-specific way, so I can't help you
> without knowing what architecture you're dealing with, not
> to mention what kernel version, or whether it's configured
> CONFIG_SMP or not, and whether you can run crash on the live
> system that generated the dumpfile.
>
> Dave
>
The machine is a ppc64 box with a RHEL5.1 based SMP kernel.  nr_cpus is 
equal to '2' in get_idle_threads() , but the system actually has 14 cpus 
and 12 of them were offline when a vmcore was collected. The 
kt->__per_cpu_offset[12 & 13 ] have per cpu offset values  where as 
kt->__per_cpu_offset[0 to 11] = 0.   I changed kt->__per_cpu_offset[i] 
in ppc64_paca_init()  to kt->__per_cpu_offset[cpus]  and that started 
crash.  But backtrace 'bt' exited with segmentation fault .  Looking 
further the code in get_netdump_regs_ppc64()
                if (nd->num_prstatus_notes > 1)
                {
                        note = (Elf64_Nhdr *)
                                nd->nt_prstatus_percpu[bt->tc->processor];
                }
had bt->tc->processor as '12'. I changed it to '0' and that gave the 
backtrace.

Regards,
Chandru




More information about the Crash-utility mailing list