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?
Yes, this is intended behavior
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@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 single task hanging for an extended period may not be a critical issue, as users might still log into the system to investigate. However, if multiple tasks hang simultaneously-such as in cases of I/O hangs caused by disk failures-it could prevent users from logging in and become a serious problem, and a panic is expected.
--- 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 &&
console_verbose(); hung_task_show_lock = true; hung_task_call_panic = true;(total_hung_task >= sysctl_hung_task_panic)) {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