baiwd wrote:
Hi:
When I use crash, I encounter this strange thing.
Executing "vm 1" under crash, I see:
PID: 1 TASK: e0000001ff908000 CPU: 0 COMMAND: "init"
MM PGD RSS TOTAL_VM
e000000185baac80 e000000185ca8000 256k 4464k
VMA START END FLAGS FILE
e000000185abc878 0 4000 84011
e000000185abca88 2000000000000000 200000000003c000 875 /lib/ld-2.5.so
e000000185abcb38 2000000000048000 2000000000050000 100873 /lib/ld-2.5.so
e000000185abfaa8 2000000000060000 20000000000e0000 75
/lib/libsepol.so.1
e000000185abf738 20000000000e0000 20000000000ec000 70
/lib/libsepol.so.1
e000000185abf948 20000000000ec000 20000000000f0000 100073
/lib/libsepol.so.1
e000000185abf9f8 20000000000f0000 20000000000fc000 100073
e000000185abfb58 20000000000fc000 2000000000124000 75
/lib/libselinux.so.1
e000000185abf898 2000000000124000 2000000000130000 70
/lib/libselinux.so.1
e000000185abf5d8 2000000000130000 2000000000134000 100073
/lib/libselinux.so.1
e000000185abf688 2000000000134000 2000000000138000 100073
e000000185abd218 2000000000138000 20000000003a0000 75
/lib/libc-2.5.so
e000000185abd168 20000000003a0000 20000000003ac000 70
/lib/libc-2.5.so
e000000185abc458 20000000003ac000 20000000003b4000 100073
/lib/libc-2.5.so
e000000185abc718 20000000003b4000 20000000003b8000 100073
e000000185abd798 20000000003b8000 20000000003c0000 75
/lib/libdl-2.5.so
e000000185abc508 20000000003c0000 20000000003cc000 70
/lib/libdl-2.5.so
e000000185abd848 20000000003cc000 20000000003d0000 100073
/lib/libdl-2.5.so
e000000185abd8f8 20000000003d0000 20000000003e8000 100073
e000000185abc928 4000000000000000 4000000000014000 1875 /sbin/init
But when I execute "vm 1" under crash -s, the second part is
missing.
[root@rhel51rc2 crash-4.0-6.1]# crash -s
crash> vm 1
PID: 1 TASK: e0000001ff908000 CPU: 0 COMMAND: "init"
MM PGD RSS TOTAL_VM
0 0 0k 0k
I think is caused by that IS_ZOMBIE(task) in memory.c failed.
And this failure
is caused by that the value of _ZOMBIE_ has not been initialized. the
initialization of
_ZOMBIE_ is in initialize_task_struct(), called by show_context()
finally. But when
executing "crash -s", it's not called.
I added the following code in memory.c before using _ZOMBIE_, but
I don't know
whether it's good, it need to change initialize_task_state() to
nonstatic and use
TASK_STATE_UNINITIALIZED which is now in task.c only.
"
if (_ZOMBIE_ == TASK_STATE_UNINITIALIZED)
initialize_task_state();
"
Best Regards
Nice catch! I'm going to just call initialize_task_state() from
task_init() so that it will get done unconditionally. Queued for
the next release.
Thanks,
Dave
--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility