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

Chandru chandru at in.ibm.com
Fri Jun 12 05:21:43 UTC 2009


Chandru wrote:
>
>> I ask because this is the way I'd prefer to go:
>>
>> void
>> map_cpus_to_prstatus(void)
>> {
>>         void **nt_ptr;
>>         int online, i, j, nrcpus;
>>         size_t size;
>>
>>         if (!(online = get_cpus_online()) || (online == kt->cpus))
>>                 return;
>>
>>         if (CRASHDEBUG(1))
>>                 error(INFO,
>>                     "cpus: %d online: %d NT_PRSTATUS notes: %d 
>> (remapping)\n",
>>                         kt->cpus, online, nd->num_prstatus_notes);
>>
>>         size = NR_CPUS * sizeof(void *);
>>
>>         nt_ptr = (void **)GETBUF(size);
>>         BCOPY(nd->nt_prstatus_percpu, nt_ptr, size);
>>         BZERO(nd->nt_prstatus_percpu, size);
>>
>>         /*
>>          *  Re-populate the array with the notes mapping to online cpus
>>          */
>>         nrcpus = (kt->kernel_NR_CPUS ? kt->kernel_NR_CPUS : NR_CPUS);
>>
>>         for (i = 0, j = 0; i < nrcpus; i++) {
>>                 if (in_cpu_map(ONLINE, i))
>>                         nd->nt_prstatus_percpu[i] = nt_ptr[j++];
>>         }
>>
>>         FREEBUF(nt_ptr);
>> }
>>
>> And since kt->cpus may not be finally initialized until later than
>> kernel_init(), I moved the call to map_cpus_to_prstatus() to here
>> in task_init():
>>
>>         if (ACTIVE()) {
>>                 active_pid = REMOTE() ? pc->server_pid : 
>> pc->program_pid;
>>                 set_context(NO_TASK, active_pid);
>>                 tt->this_task = pid_to_task(active_pid);
>>         }
>>         else {
>>                 if (KDUMP_DUMPFILE())
>>                         map_cpus_to_prstatus();
>>                 please_wait("determining panic task");
>>                 set_context(get_panic_context(), NO_PID);
>>                 please_wait_done();
>>         }
>>
>> Can you test the map_cpus_to_prstatus() function above, along with the
>> movement of the call to it from kernel_init() to task_init()?
>>
>>
>>   
> Yes, I tested these changes and they work fine.
>
> Thanks,
> Chandru
>
Hello Dave,

Could you please let me know if these changes will make it into the next 
version of crash utility ?,

Thanks
Chandru




More information about the Crash-utility mailing list