----- 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(a)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