There are just too many kinds of panic types are categorized under the same Oops: xxxx, makes this field really ambiguous and not so useful PANIC: "Oops: 0000 [#1] SMP " (check log for details) this patch separated 3 kinds of panicmsg out, as the most happening cases among the machines managed by me; the match string are copied from kernel source code exactly, after applied, I got panicmsg like: include/linux/kernel.h:#define HW_ERR panicmsg: "[Hardware Error]: CPU 7: Machine Check Exception: 5 Bank 11: f200003f000100b2" drivers/char/sysrq.c:__handle_sysrq panicmsg: "SysRq : Trigger a crash" arch/x86/kernel/traps.c:do_general_protection panicmsg: "general protection fault: 8800 [#1] SMP" arch/x86/mm/fault.c:show_fault_oops panicmsg: "BUG: unable to handle kernel paging request at 00001248a68eb328" Signed-off-by: Derek Che <drc@xxxxxxxxxxxxx> --- task.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/task.c b/task.c index 4214d7f..6ecfbcf 100644 --- a/task.c +++ b/task.c @@ -5509,8 +5509,24 @@ get_panicmsg(char *buf) } rewind(pc->tmpfile); while (!msg_found && fgets(buf, BUFSIZE, pc->tmpfile)) { - if (strstr(buf, "Oops: ") || - strstr(buf, "kernel BUG at")) + if (strstr(buf, "[Hardware Error]: ")) + msg_found = TRUE; + } + rewind(pc->tmpfile); + while (!msg_found && fgets(buf, BUFSIZE, pc->tmpfile)) { + if (strstr(buf, "SysRq : ")) + msg_found = TRUE; + } + rewind(pc->tmpfile); + while (!msg_found && fgets(buf, BUFSIZE, pc->tmpfile)) { + if (strstr(buf, "general protection fault")) + msg_found = TRUE; + } + rewind(pc->tmpfile); + while (!msg_found && fgets(buf, BUFSIZE, pc->tmpfile)) { + if (strstr(buf, "Oops: ") || + strstr(buf, "kernel BUG at") || + strstr(buf, "BUG: unable to handle kernel ")) msg_found = TRUE; } rewind(pc->tmpfile); -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility