From: simonmar Date: Fri, 2 Mar 2001 14:25:04 +0000 (+0000) Subject: [project @ 2001-03-02 14:25:04 by simonmar] X-Git-Tag: Approximately_9120_patches~2485 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=2efbfc25ca8c9b79cc74a470c49a3cb73016d410;p=ghc-hetmet.git [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. --- 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; }