summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2009-11-23 11:04:16 +0000
committerSimon Marlow <marlowsd@gmail.com>2009-11-23 11:04:16 +0000
commitce7bf1839d868fd829f0224b226da54612ac0e88 (patch)
tree0f708636bff00d4f03920ccb9b098291306bde6e /rts
parentb7a8d2059f982599d31d14395c6628a049ec5179 (diff)
downloadhaskell-ce7bf1839d868fd829f0224b226da54612ac0e88.tar.gz
disable a false assertion, add a comment to explain why
Diffstat (limited to 'rts')
-rw-r--r--rts/sm/Scav.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c
index a2ee1ced27..466b9b44f7 100644
--- a/rts/sm/Scav.c
+++ b/rts/sm/Scav.c
@@ -1490,9 +1490,11 @@ scavenge_mutable_list(bdescr *bd, generation *gen)
case TSO: {
StgTSO *tso = (StgTSO *)p;
if (tso->dirty == 0) {
- // Must be on the mutable list because its link
- // field is dirty.
- ASSERT(tso->flags & TSO_LINK_DIRTY);
+ // Should be on the mutable list because its link
+ // field is dirty. However, in parallel GC we may
+ // have a thread on multiple mutable lists, so
+ // this assertion would be invalid:
+ // ASSERT(tso->flags & TSO_LINK_DIRTY);
scavenge_TSO_link(tso);
if (gct->failed_to_evac) {