[PATCH][v3] hung_task: Panic after fixed number of hung tasks
Petr Mladek
pmladek at suse.com
Tue Oct 14 20:45:05 AEDT 2025
On Tue 2025-10-14 13:23:58, Lance Yang wrote:
> Thanks for the patch!
>
> I noticed the implementation panics only when N tasks are detected
> within a single scan, because total_hung_task is reset for each
> check_hung_uninterruptible_tasks() run.
Great catch!
Does it make sense?
Is is the intended behavior, please?
> So some suggestions to align the documentation with the code's
> behavior below :)
> On 2025/10/12 19:50, lirongqing wrote:
> > From: Li RongQing <lirongqing at baidu.com>
> >
> > Currently, when 'hung_task_panic' is enabled, the kernel panics
> > immediately upon detecting the first hung task. However, some hung
> > tasks are transient and the system can recover, while others are
> > persistent and may accumulate progressively.
My understanding is that this patch wanted to do:
+ report even temporary stalls
+ panic only when the stall was much longer and likely persistent
Which might make some sense. But the code does something else.
> > --- a/kernel/hung_task.c
> > +++ b/kernel/hung_task.c
> > @@ -229,9 +232,11 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout)
> > */
> > sysctl_hung_task_detect_count++;
> > + total_hung_task = sysctl_hung_task_detect_count - prev_detect_count;
> > trace_sched_process_hang(t);
> > - if (sysctl_hung_task_panic) {
> > + if (sysctl_hung_task_panic &&
> > + (total_hung_task >= sysctl_hung_task_panic)) {
> > console_verbose();
> > hung_task_show_lock = true;
> > hung_task_call_panic = true;
I would expect that this patch added another counter, similar to
sysctl_hung_task_detect_count. It would be incremented only
once per check when a hung task was detected. And it would
be cleared (reset) when no hung task was found.
Best Regards,
Petr
More information about the Linux-aspeed
mailing list