[Crash-utility] [PATCH v2 1/1] CFS runqueue loop detection
Dave Anderson
anderson at redhat.com
Thu Feb 2 19:04:18 UTC 2012
----- Original Message -----
> Here is a patch against crash v6.0.3rc24 that adds duplicate node
> detection per-CPU for the CFS runqueue display in dump_CFS_runqueues()
> for the runq command.
>
> This resolves for that 6.0.3 rc the failure to bail-out of the unending
> looping display I get with the crash dump I have that has a corrupted
> CFS runqueue containing a loop.
>
> Signed-off-by: David Mair <dmair at suse.com>
> ---
> task.c | 11 ++++++++++-
> 1 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/task.c b/task.c
> index c81cb74..7a3e8e1 100755
> --- a/task.c
> +++ b/task.c
> @@ -7060,7 +7060,14 @@ dump_tasks_in_cfs_rq(ulong cfs_rq)
> OFFSET(sched_entity_run_node));
> if (!tc)
> continue;
> - dump_task_runq_entry(tc);
> + if (hq_enter((ulong)tc)) {
> + dump_task_runq_entry(tc);
> + } else {
> + error(WARNING, "Duplicate CFS runqueue node, task %lx"
> + ", probable loop\n",
> + tc->task);
> + return total;
> + }
> total++;
> }
>
> @@ -7220,7 +7227,9 @@ dump_CFS_runqueues(void)
>
> fprintf(fp, " CFS RB_ROOT: %lx\n", (ulong)root);
>
> + hq_open();
> tot = dump_tasks_in_cfs_rq(cfs_rq);
> + hq_close();
> if (!tot) {
> INDENT(5);
> fprintf(fp, "[no tasks queued]\n");
>
Thanks Dave -- queued for crash-6.0.3.
Dave
More information about the Crash-utility
mailing list