[Crash-utility] [PATCH] Fix x86 initialization for {hard, soft}irq_ctx

OGAWA Hirofumi hirofumi at mail.parknet.co.jp
Fri Feb 17 15:10:25 UTC 2017


Dave Anderson <anderson at redhat.com> writes:

>> [BTW, current x86_get_pc() uses inactive_task_frame_ret_addr to get
>> pc. However, inactive_task_frame is only valid if task is sleeping
>> state. (running task may overwrite inactive_task_frame already.)  I'm
>> not sure whether we should check is_task_active() or not. Even if
>> checking is_task_active(), we can't get pc correctly anyway.]
>
> Well, x86_get_pc() should only be called in the case of sleeping
> tasks because each dumpfile type has its own function to try to
> find the active task registers.  For example, on a kdump:
>
>   cmd_bt()
>     back_trace()
>       get_kdump_regs()
>          get_netdump_regs()
>             get_netdump_regs_x86()
>
> get_netdump_regs_x86() *should* find the starting point hooks.
> If it fails to do so, it will default to machdep->get_stack_frame()
> and ultimately x86_get_pc().  So if it gets there, the backtrace
> is pretty much guaranteed to be invalid.  

Ah, this might be because of the above hardirq_tasks[] bug.

Thanks.
-- 
OGAWA Hirofumi <hirofumi at mail.parknet.co.jp>




More information about the Crash-utility mailing list