Commit 18f73b07 authored by simonmar's avatar simonmar
Browse files

[project @ 2001-03-02 14:28:44 by simonmar]

Yet another good bug (I'm on a roll today! :-)

When squeezing update frames, make sure the updatee pointers aren't
identical before updating one to point to the other.  This is mostly
harmless, but in one example I have caused the program to go into an
infinite loop rather than fall down a black hole.

To be merged into the 4.08 branch.
parent 5cd7cb62
/* -----------------------------------------------------------------------------
* $Id: GC.c,v 1.96 2001/02/11 17:51:07 simonmar Exp $
* $Id: GC.c,v 1.97 2001/03/02 14:28:44 simonmar Exp $
*
* (c) The GHC Team 1998-1999
*
......@@ -3342,7 +3342,10 @@ threadSqueezeStack(StgTSO *tso)
* sorted out? oh yes: we aren't counting each enter properly
* in this case. See the log somewhere. KSW 1999-04-21
*/
UPD_IND_NOLOCK(updatee_bypass, updatee_keep); /* this wakes the threads up */
if (updatee_bypass != updatee_keep) {
/* this wakes the threads up */
UPD_IND_NOLOCK(updatee_bypass, updatee_keep);
}
sp = (P_)frame - 1; /* sp = stuff to slide */
displacement += sizeofW(StgUpdateFrame);
......
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