On 2023/06/12 19:50, Lianbo Jiang wrote:
Crash tool will fail to load vmcore with the following error:
#crash vmlinux /var/crash/127.0.0.1-2023-06-07-22\:03\:24/vmcore -s
crash: invalid structure size: note_buf
FILE: diskdump.c LINE: 121 FUNCTION: have_crash_notes()
[./crash] error trace: 101859ac => 10291798 => 10291450 => 10266038
10266038: SIZE_verify+156
10291450: have_crash_notes+308
10291798: map_cpus_to_prstatus_kdump_cmprs+448
101859ac: task_init+11980
The reason is that the note_buf is not intialized before using the
SIZE(note_buf) in the have_crash_notes(). Let's initialize the variable
note_buf in the task_init() to fix this issue.
Fixes: db8c030857b4 ("diskdump/netdump: fix segmentation fault caused by failure of
stopping CPUs")
Signed-off-by: Lianbo Jiang <lijiang(a)redhat.com>
Thanks for the update. Tweaked the commit log and applied.
https://github.com/crash-utility/crash/commit/ec1e61b33a705b8be8d116a541c...
Thanks,
Kazu
> ---
> task.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/task.c b/task.c
> index 88941c7b0e4d..2b7467b4193d 100644
> --- a/task.c
> +++ b/task.c
> @@ -675,6 +675,9 @@ task_init(void)
> tt->this_task = pid_to_task(active_pid);
> }
> else {
> + if (INVALID_SIZE(note_buf))
> + STRUCT_SIZE_INIT(note_buf, "note_buf_t");
> +
> if (KDUMP_DUMPFILE())
> map_cpus_to_prstatus();
> else if (ELF_NOTES_VALID() && DISKDUMP_DUMPFILE())