From 50bff0c5fb8dc13987fcb4e9bf16432da1544740 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sat, 27 Aug 2016 18:11:26 -0700 Subject: 3264 Turns out chessboard.mu started deadlocking in commit 3258 even though all its tests continue to pass. Not fixed yet; first make deadlock easier to diagnose. --- 073wait.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to '073wait.cc') diff --git a/073wait.cc b/073wait.cc index 0d635cc3..e42df163 100644 --- a/073wait.cc +++ b/073wait.cc @@ -34,6 +34,11 @@ if (Passed && any_routines_waiting()) { Passed = false; raise << Current_scenario->name << ": deadlock!\n" << end(); } +:(before "End Run Routine") +if (any_routines_waiting()) { + raise << "deadlock!\n" << end(); + dump_waiting_routines(); +} :(before "End Test Teardown") if (Passed && any_routines_with_error()) { Passed = false; @@ -47,6 +52,12 @@ bool any_routines_waiting() { } return false; } +void dump_waiting_routines() { + for (int i = 0; i < SIZE(Routines); ++i) { + if (Routines.at(i)->state == WAITING) + cerr << i << ": " << routine_label(Routines.at(i)) << '\n'; + } +} //: primitive recipe to put routines in that state -- cgit 1.4.1-2-gfad0