Commit c13c43a1 authored by simonmar's avatar simonmar
Browse files

[project @ 1999-09-10 11:11:51 by simonmar]

Fix run queue corruption bug, introduced in recent threadWait commit.

This fixes the "memo002 goes off into outer space" bug.
parent 1db24428
/* -----------------------------------------------------------------------------
* $Id: Schedule.c,v 1.24 1999/08/25 16:11:51 simonmar Exp $
* $Id: Schedule.c,v 1.25 1999/09/10 11:11:51 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
......@@ -654,6 +654,7 @@ StgTSO *unblockOne(StgTSO *tso)
ASSERT(tso->why_blocked != NotBlocked);
tso->why_blocked = NotBlocked;
next = tso->link;
tso->link = END_TSO_QUEUE;
PUSH_ON_RUN_QUEUE(tso);
IF_DEBUG(scheduler,belch("Waking up thread %ld", tso->id));
return next;
......
/* -----------------------------------------------------------------------------
* $Id: Schedule.h,v 1.6 1999/08/25 16:11:51 simonmar Exp $
* $Id: Schedule.h,v 1.7 1999/09/10 11:11:52 simonmar Exp $
*
* (c) The GHC Team 1998-1999
*
......@@ -43,6 +43,9 @@ extern StgTSO *MainTSO; /* temporary hack */
#endif
#define END_TSO_QUEUE ((StgTSO *)(void*)&END_TSO_QUEUE_closure)
/* Add a thread to the end of the run queue.
* NOTE: tso->link should be END_TSO_QUEUE before calling this macro.
*/
#define PUSH_ON_RUN_QUEUE(tso) \
if (run_queue_hd == END_TSO_QUEUE) { \
run_queue_hd = tso; \
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment