[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <27240C0AC20F114CBF8149A2696CBE4A6015ABB6@SHSMSX101.ccr.corp.intel.com>
Date: Tue, 11 Dec 2018 01:16:10 +0000
From: "Liu, Chuansheng" <chuansheng.liu@...el.com>
To: Tetsuo Handa <penguin-kernel@...ove.sakura.ne.jp>,
Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>
CC: "akpm@...ux-foundation.org" <akpm@...ux-foundation.org>,
"pmladek@...e.com" <pmladek@...e.com>,
"sergey.senozhatsky@...il.com" <sergey.senozhatsky@...il.com>,
"rostedt@...dmis.org" <rostedt@...dmis.org>,
"dvyukov@...gle.com" <dvyukov@...gle.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH] kernel/hung_task.c: force ignore_loglevel before panic
> -----Original Message-----
> From: Tetsuo Handa [mailto:penguin-kernel@...ove.sakura.ne.jp]
> Sent: Monday, December 10, 2018 5:59 PM
> To: Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>; Liu,
> Chuansheng <chuansheng.liu@...el.com>
> Cc: akpm@...ux-foundation.org; pmladek@...e.com;
> sergey.senozhatsky@...il.com; rostedt@...dmis.org; dvyukov@...gle.com;
> linux-kernel@...r.kernel.org
> Subject: Re: [PATCH] kernel/hung_task.c: force ignore_loglevel before panic
>
> 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;
> - }
Thanks Tetsuo, I prefer this option, which makes code more readable.
>
> 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?
More thoughts in this condition of sysctl_hung_task_warnings == 0 && sysctl_hung_task_panic == 1,
in this case, debug_show_all_locks() may not output useful information if LOCK DEBUG config is not enabled.
trigger_all_cpu_backtrace() will not show the hung task for debugging either.
We may enhance it by:
- if (sysctl_hung_task_warnings) {
+ if (sysctl_hung_task_panic || sysctl_hung_task_warnings) {
if (sysctl_hung_task_warnings > 0)
sysctl_hung_task_warnings--;
Powered by blists - more mailing lists