>Hi Atsushi, > >On Wednesday 19 July 2017 01:16 PM, Atsushi Kumagai wrote: >> Hello Pratyush, >> >>> Call cach_init() before get_kcore_dump_loads(), because latter uses >>> cache_search(). >>> >>> Call path is like this : >>> get_kcore_dump_loads() -> process_dump_load() -> vaddr_to_paddr() -> >>> vtop4_x86_64() -> readmem() -> cache_search() >> >> I found that the current cach_init() is too early, cache_init() should be >> called after fallback_to_current_page_size() for older kernel >> which doesn't have VMCOREINFO. >> Could you confirm that the patch below is fine with you ? > >Its fine and works. Thanks, I'll merge this fix into v1.6.2. Regards, Atsushi Kumagai >> >> Thanks, >> Atsushi Kumagai >> >> From: Atsushi Kumagai <ats-kumagai at wm.jp.nec.com> >> Date: Wed, 19 Jul 2017 15:05:58 +0900 >> Subject: [PATCH] Fix the regression caused by moving cache_init() earlier >> >> info->page_size should be set before calling cache_init() since it >> allocates some buffers based on info->page_size. However, cache_init() >> was moved before fallback_to_current_page_size() while it set >> info->page_size for older kernel which doesn't have VMCOREINFO. >> >> This patch moves cache_init() after fallback_to_current_page_size() >> and reverts the commit: b98e6e0d2a(sadump: set info->page_size before cache_init()) >> >> Signed-off-by: Atsushi Kumagai <ats-kumagai at wm.jp.nec.com> >> --- >> makedumpfile.c | 28 ++++++++++++++++------------ >> 1 file changed, 16 insertions(+), 12 deletions(-) >> >> diff --git a/makedumpfile.c b/makedumpfile.c >> index a3f0697..f85003a 100644 >> --- a/makedumpfile.c >> +++ b/makedumpfile.c >> @@ -3905,15 +3905,6 @@ initial(void) >> if (!get_value_for_old_linux()) >> return FALSE; >> >> - if (info->flag_sadump && !set_page_size(sadump_page_size())) >> - return FALSE; >> - >> - if (!is_xen_memory() && !cache_init()) >> - return FALSE; >> - >> - if (info->flag_mem_usage && !get_kcore_dump_loads()) >> - return FALSE; >> - >> if (info->flag_refiltering) { >> if (info->flag_elf_dumpfile) { >> MSG("'-E' option is disable, "); >> @@ -3936,6 +3927,9 @@ initial(void) >> return FALSE; >> } >> >> + if (!set_page_size(sadump_page_size())) >> + return FALSE; >> + >> if (!sadump_initialize_bitmap_memory()) >> return FALSE; >> >> @@ -3949,9 +3943,7 @@ initial(void) >> * postponed until debug information becomes >> * available. >> */ >> - >> - } else if (!get_phys_base()) >> - return FALSE; >> + } >> >> out: >> if (!info->page_size) { >> @@ -3962,6 +3954,18 @@ out: >> if (!fallback_to_current_page_size()) >> return FALSE; >> } >> + >> + if (!is_xen_memory() && !cache_init()) >> + return FALSE; >> + >> + if (info->flag_mem_usage && !get_kcore_dump_loads()) >> + return FALSE; >> + >> + if (!info->flag_refiltering && !info->flag_sadump) { >> + if (!get_phys_base()) >> + return FALSE; >> + } >> + >> if (!get_max_mapnr()) >> return FALSE; >> >> > >-- >Regards >Pratyush