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 <[email protected]>
---
 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
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility

Reply via email to