Re: [PATCH] kernel/hung_task.c: force ignore_loglevel before panic

From: Tetsuo Handa
Date: Mon Dec 10 2018 - 04:59:03 EST


On 2018/12/10 15:11, Sergey Senozhatsky wrote:
> On (12/10/18 05:58), Liu, Chuansheng wrote:
>>> On (12/10/18 05:40), Liu, Chuansheng wrote:
>>>> @@ -130,6 +130,13 @@ static void check_hung_task(struct task_struct *t,
>>> unsigned long timeout)
>>>> init_utsname()->version);
>>>> pr_err("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\""
>>>> " disables this message.\n");
>>>> + /* When sysctl_hung_task_panic is set, we have to force
>>>> + * ignore_loglevel to get really useful hung task
>>>> + * information.
>>>> + */
>>>> + if (sysctl_hung_task_panic && !ignore_loglevel)
>>>> + ignore_loglevel = true;
>>>
>>> console_verbose()?
>>
>> Thanks Sergey, it is really my need. I will prepare for a new version of patch:)
>
> Let's wait for people to take a look at this patch first.

Shouldn't console_verbose() be called like

- if (!sysctl_hung_task_warnings && !sysctl_hung_task_panic)
+ if (sysctl_hung_task_panic)
+ console_verbose();
+ else if (!sysctl_hung_task_warnings)
return;

or

- if (!sysctl_hung_task_warnings && !sysctl_hung_task_panic)
- return;
+ if (sysctl_hung_task_panic)
+ console_verbose();

or

- if (!sysctl_hung_task_warnings && !sysctl_hung_task_panic)
- return;
+ if (sysctl_hung_task_panic) {
+ console_verbose();
+ hung_task_show_lock = true;
+ hung_task_call_panic = true;
+ }
(...snipped...)
- if (sysctl_hung_task_panic) {
- hung_task_show_lock = true;
- hung_task_call_panic = true;
- }

so that sysctl_hung_task_warnings == 0 && sysctl_hung_task_panic == 1
will call debug_show_all_locks() and trigger_all_cpu_backtrace() with
verbose level?