[Crash-utility] [PATCH v2 1/1] CFS runqueue loop detection

David Mair dmair at suse.com
Thu Feb 2 16:04:51 UTC 2012


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");




More information about the Crash-utility mailing list