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 ? Thanks, Atsushi Kumagai From: Atsushi Kumagai <ats-kumagai@xxxxxxxxxxxxx> 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; -- 2.7.2 >Signed-off-by: Pratyush Anand <panand at redhat.com> >--- > makedumpfile.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > >diff --git a/makedumpfile.c b/makedumpfile.c >index 6942047199de..3b8e9810468d 100644 >--- a/makedumpfile.c >+++ b/makedumpfile.c >@@ -3878,6 +3878,9 @@ initial(void) > if (!get_value_for_old_linux()) > return FALSE; > >+ if (!is_xen_memory() && !cache_init()) >+ return FALSE; >+ > if (info->flag_mem_usage && !get_kcore_dump_loads()) > return FALSE; > >@@ -4000,9 +4003,6 @@ out: > } > } > >- if (!is_xen_memory() && !cache_init()) >- return FALSE; >- > if (debug_info && !get_machdep_info()) > return FALSE; > >-- >2.9.3 >