Hello, I found some confusing things during the usage of analysing the stack data.
Summury:
with the same demo named oops.ko and the same architecure(x86_64), there are two different
stack layout
the demo make a crash with hungtask.
1) kernel version
[root@localhost ~]# uname -r
3.10.0-693.el7.x86_64
gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
crash version:
[root@localhost ~]# crash --version
crash 7.1.9-2.el7
[root@localhost ~]# gdb -v
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-100.el7\
bt -f pid
1--the callback address for create_oops function
2--the rbp register value for stack frame 5, point to the address ffff8800a637fd69.
this layout in accordance with the x86_64 stack principle
2) kernel version
[root@kylinv10 ~]# uname -r
4.19.90-24.4.v2101.ky10.x86_64
gcc version:
[root@kylinv10 ~]# gcc --version
gcc (GCC) 7.3.0
[root@kylinv10 ~]# gdb -v
GNU gdb (GDB) EulerOS 9.2-1.ky10
crash version:
[root@kylinv10 ~]# crash --version
crash 7.2.9-2.p02.ky10
bt -f pid
1/2/3--there should be the value for the next stack frame's(in higher address) rbp
register value, should be the valid address in this stack.
but, they are invalid address "0000000000000001" "ffff8adb5424ccc0"
and "ffffffffc096b000"
I don't know the reason.4.19kernel, has this kernel param value like:
kernel.randomize_va_space=0
thank you.
--
Jane