Derek, I don't understand what you're expecting me to do -- pick one of the 4 patches? Can you please repost just one patch? And this part clearly cannot be applied, because the "SysRq :" string would also be displayed by all of the possible sysrq letters: > + while (!msg_found && fgets(buf, BUFSIZE, pc->tmpfile)) { > + if (strstr(buf, "SysRq : ")) > + msg_found = TRUE; > + } Thanks, Dave ----- Original Message ----- > 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