[Crash-utility] [PATCH] take Hardware Error & kernel pointer bug as separate panicmsg

Dave Anderson anderson at redhat.com
Tue Feb 3 16:03:38 UTC 2015


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 at yahoo-inc.com>
> ---
>  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);
> 




More information about the Crash-utility mailing list