Fix #3875: Crash in parallel GC, wrong pointer was being tested.
authorBen.Lippmeier@anu.edu.au <unknown>
Mon, 22 Feb 2010 03:16:27 +0000 (03:16 +0000)
committerBen.Lippmeier@anu.edu.au <unknown>
Mon, 22 Feb 2010 03:16:27 +0000 (03:16 +0000)
rts/sm/Evac.c

index db24909..76026b0 100644 (file)
@@ -878,7 +878,7 @@ selector_chain:
         } while (info_ptr == (W_)&stg_WHITEHOLE_info);
 
         // make sure someone else didn't get here first...
-        if (IS_FORWARDING_PTR(p) || 
+        if (IS_FORWARDING_PTR(info_ptr) || 
             INFO_PTR_TO_STRUCT(info_ptr)->type != THUNK_SELECTOR) {
             // v. tricky now.  The THUNK_SELECTOR has been evacuated
             // by another thread, and is now either a forwarding ptr or IND.