Re: [PATCH v4 4/4] pr_emerg add WARN_XX() debugger options

From: Jeffrey Merkey
Date: Mon Feb 01 2016 - 21:01:39 EST


On 2/1/16, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> On Mon, 1 Feb 2016 16:35:52 -0700
> Jeffrey Merkey <jeffmerkey@xxxxxxxxx> wrote:
>> ---
>> include/linux/printk.h | 8 ++++++++
>> 1 file changed, 8 insertions(+)
>>
>> diff --git a/include/linux/printk.h b/include/linux/printk.h
>> index 51dd6b8..dcfb270 100644
>> --- a/include/linux/printk.h
>> +++ b/include/linux/printk.h
>> @@ -252,8 +252,16 @@ extern asmlinkage void dump_stack(void) __cold;
>> * and other debug macros are compiled out unless either DEBUG is
>> defined
>> * or CONFIG_DYNAMIC_DEBUG is set.
>> */
>> +#ifdef CONFIG_DEBUG_WARN
>> +#define pr_emerg(fmt, ...) \
>> +({ \
>> + printk(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__); \
>> + BUG(); \
>
> This look rather heavy handed for a debug feature. This will crash any
> kernel on a pr-emerg(), similar to a panic on warning. Not only that,
> for cases that cal pr_emerg() more than once, it crashes on the first
> instance.
>
> What about adding a condition that can be set set in /proc/sys/kernel/
> A file called something like crash_on_print_emerg ?
>
> BUG_ON(crash_on_pr_emerg);
>
> -- Steve
>

If a debugger is loaded it will not crash, just enter the debugger.
But yes, it will int3 if set and no debugger has been loaded to handle
the int3 condition. Hmmm. Maybe its better just to skip calling
pr_emerg and put this logic as a single call somewhere else.

Jeff