diff --git a/bootstat/bootstat.cpp b/bootstat/bootstat.cpp index a1fe6ed4b..dfc46ea61 100644 --- a/bootstat/bootstat.cpp +++ b/bootstat/bootstat.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -191,7 +192,9 @@ const std::map kBootReasonMap = { {"s3_wakeup", 51}, {"kernel_panic,sysrq", 52}, {"kernel_panic,NULL", 53}, + {"kernel_panic,null", 53}, {"kernel_panic,BUG", 54}, + {"kernel_panic,bug", 54}, {"bootloader", 55}, {"cold", 56}, {"hard", 57}, @@ -485,18 +488,19 @@ bool correctForBer(std::string& reason, const std::string& needle) { bool addKernelPanicSubReason(const pstoreConsole& console, std::string& ret) { // Check for kernel panic types to refine information - if (console.rfind("SysRq : Trigger a crash") != std::string::npos) { + if ((console.rfind("SysRq : Trigger a crash") != std::string::npos) || + (console.rfind("PC is at sysrq_handle_crash+") != std::string::npos)) { // Can not happen, except on userdebug, during testing/debugging. ret = "kernel_panic,sysrq"; return true; } if (console.rfind("Unable to handle kernel NULL pointer dereference at virtual address") != std::string::npos) { - ret = "kernel_panic,NULL"; + ret = "kernel_panic,null"; return true; } if (console.rfind("Kernel BUG at ") != std::string::npos) { - ret = "kernel_panic,BUG"; + ret = "kernel_panic,bug"; return true; } return false;