From 2efbfc25ca8c9b79cc74a470c49a3cb73016d410 Mon Sep 17 00:00:00 2001 From: simonmar Date: Fri, 2 Mar 2001 14:25:04 +0000 Subject: [PATCH] [project @ 2001-03-02 14:25:04 by simonmar] A good bug: detectBlackHoles wasn't checking for ThreadRelocated, which is why we sometimes get "no threads to run: infinite loop or deadlock?" when we should get a NonTermination exception. To be merged into the 4.08 branch. --- ghc/rts/Schedule.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ghc/rts/Schedule.c b/ghc/rts/Schedule.c index 18efd8e..a835c7e 100644 --- a/ghc/rts/Schedule.c +++ b/ghc/rts/Schedule.c @@ -1,5 +1,5 @@ /* --------------------------------------------------------------------------- - * $Id: Schedule.c,v 1.91 2001/02/12 13:14:13 simonmar Exp $ + * $Id: Schedule.c,v 1.92 2001/03/02 14:25:04 simonmar Exp $ * * (c) The GHC Team, 1998-2000 * @@ -2978,6 +2978,11 @@ detectBlackHoles( void ) for (t = all_threads; t != END_TSO_QUEUE; t = t->global_link) { + while (t->what_next == ThreadRelocated) { + t = t->link; + ASSERT(get_itbl(t)->type == TSO); + } + if (t->why_blocked != BlockedOnBlackHole) { continue; } -- 1.7.10.4