Hi kazu:
1. I know that kernel have nr_swapper_spaces since kernel 4.11 which brought into kernel with struct address_space *swapper_spaces[]
my team think GKI vmlinux did not have nr_swapper_spaces this symbol, may due to compile rule changed in AOSP code.
we will try to find the root cause of vmlinux without symbol name nr_swappera_space.
>> RELEASE: 6.1.25-android14-11-maybe-dirty-qki-consolidate
>>
crash> nr_swapper_spaces
>> crash: command not found: nr_swapper_spaces
2. I printf log of crash when execute kmem -i, it run into branch of "
symbol_exists("swapper_spaces")", also
can not find
nr_swapper_spaces
if (symbol_exists("nr_swapper_spaces") {
......
} else if (symbol_exists("swapper_spaces") {
......
} else if (symbol_exists("swapper_space") {
......
}
3. using my patch, it can fix output log of kmem -i which CACHED show not right.
Fix before:
crash> kmem -i
PAGES TOTAL PERCENTAGE
TOTAL MEM 2854115 10.9 GB ----
FREE 169699 662.9 MB 5% of TOTAL MEM
USED 2684416 10.2 GB 94% of TOTAL MEM
SHARED 891094 3.4 GB 31% of TOTAL MEM
BUFFERS 329 1.3 MB 0% of TOTAL MEM
CACHED 873327085626 3331478.4 GB 30598875% of TOTAL MEM
SLAB 230128 898.9 MB 8% of TOTAL MEM
Fix after:
crash> kmem -i
PAGES TOTAL PERCENTAGE
TOTAL MEM 2854115 10.9 GB ----
FREE 169699 662.9 MB 5% of TOTAL MEM
USED 2684416 10.2 GB 94% of TOTAL MEM
SHARED 891094 3.4 GB 31% of TOTAL MEM
BUFFERS 329 1.3 MB 0% of TOTAL MEM
CACHED 1729018 6.6 GB 60% of TOTAL MEM
SLAB 230128 898.9 MB 8% of TOTAL MEM
I think crash tools without my patch, maybe miss some situation like this which symbol miss in kenrel vmlinux.
I think that using both branch of symbol_exist("nr_swapper_spaces")
and symbol_exists("swapper_spaces") means to double check
the situation of all kinds of kernel and vmlinux.
It seen that bring my patch can deal with more unusual situation and make
crash tool more compatible.
Thanks!
Best Regards