hung_task: print more info when reporting the problem
PATCH 1/1 hung_task: print more info when reporting the problem
printk(KERN_ERR) from check_hung_task() likely means the bug, but unlike BUG_ON/WARN_ON it doesn't show the kernel version, this complicates the bug-reports investigation.
Add the additional pr_err() to print tainted/release/version like dump_stack_print_info() does, the output becomes:
INFO: task perl:504 blocked for more than 2 seconds.
Not tainted 3.11.0-rc1-10367-g136bb46-dirty #1763
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
...While at it, turn the old printk's into pr_err().
--- kernel/hung_task.c | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-)
kernel/hung_task.c +9 -4
@@ -15,6 +15,7 @@#include <linux/lockdep.h> #include <linux/export.h> #include <linux/sysctl.h> +#include <linux/utsname.h> /* * The number of tasks checked:
@@ -99,10 +100,14 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout)* Ok, the task did not get scheduled for more than 2 minutes, * complain: */ -printk (KERN_ERR "INFO: task %s:%d blocked for more than " -"%ld seconds.\n" , t->comm, t->pid, timeout); -printk (KERN_ERR "\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\"" -" disables this message.\n" ); +pr_err ("INFO: task %s:%d blocked for more than %ld seconds.\n" , + t->comm, t->pid, timeout); +pr_err (" %s %s %.*s\n" , +print_tainted (),init_utsname ()->release, + (int )strcspn (init_utsname ()->version," " ), +init_utsname ()->version); +pr_err ("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\"" +" disables this message.\n" );sched_show_task (t);debug_show_held_locks (t);
Signature · 1 line
1.5.5.1
tip-bot for Oleg Nesterov
merge bot[tip:core/locking] hung_task debugging: Print more info when reporting the problem
hung_task debugging: Print more info when reporting the problem
Commit-ID: 41e85ce8220c6e5fdef706fda6696cd291115b63 Gitweb: http://git.kernel.org/tip/41e85ce8220c6e5fdef706fda6696cd291115b63 Author: Oleg Nesterov <[email protected]> AuthorDate: Thu, 1 Aug 2013 18:59:41 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Fri, 2 Aug 2013 11:02:42 +0200
hung_task debugging: Print more info when reporting the problem
printk(KERN_ERR) from check_hung_task() likely means we have a bug, but unlike BUG_ON()/WARN_ON ()it doesn't show the kernel version, this complicates the bug-reports investigation.
Add the additional pr_err() to print tainted/release/version like dump_stack_print_info() does, the output becomes:
INFO: task perl:504 blocked for more than 2 seconds.
Not tainted 3.11.0-rc1-10367-g136bb46-dirty #1763
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
...While at it, turn the old printk's into pr_err().
--- kernel/hung_task.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
kernel/hung_task.c +9 -4
@@ -15,6 +15,7 @@#include <linux/lockdep.h> #include <linux/export.h> #include <linux/sysctl.h> +#include <linux/utsname.h> /* * The number of tasks checked:
@@ -99,10 +100,14 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout)* Ok, the task did not get scheduled for more than 2 minutes, * complain: */ -printk (KERN_ERR "INFO: task %s:%d blocked for more than " -"%ld seconds.\n" , t->comm, t->pid, timeout); -printk (KERN_ERR "\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\"" -" disables this message.\n" ); +pr_err ("INFO: task %s:%d blocked for more than %ld seconds.\n" , + t->comm, t->pid, timeout); +pr_err (" %s %s %.*s\n" , +print_tainted (),init_utsname ()->release, + (int )strcspn (init_utsname ()->version," " ), +init_utsname ()->version); +pr_err ("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\"" +" disables this message.\n" );sched_show_task (t);debug_show_held_locks (t);