From b562c2cb4e7a77387ac177f43680506c52c2bb95 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Fri, 12 Sep 2008 13:04:04 +0000 Subject: [PATCH] Fix #2586, bug in THUNK_SELECTORs (again) This time, we had forgetten the write barrier in one place. --- rts/sm/Evac.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rts/sm/Evac.c b/rts/sm/Evac.c index 9b42fc1..736c6c8 100644 --- a/rts/sm/Evac.c +++ b/rts/sm/Evac.c @@ -837,6 +837,11 @@ selector_chain: if (bd->flags & BF_EVACUATED) { unchain_thunk_selectors(prev_thunk_selector, (StgClosure *)p); *q = (StgClosure *)p; + // shortcut, behave as for: if (evac) evacuate(q); + if (evac && bd->step < gct->evac_step) { + gct->failed_to_evac = rtsTrue; + TICK_GC_FAILED_PROMOTION(); + } return; } // we don't update THUNK_SELECTORS in the compacted -- 1.7.10.4