diff options
author | Takano Akio <tak@anoak.io> | 2016-05-11 14:45:29 +0200 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2016-05-11 14:46:48 +0200 |
commit | 9363f04d0ff22f3d898af35bb5432c4287e6dc9a (patch) | |
tree | 0e80d6c88760bf61ac29da655c1c3356c1c80545 /rts/sm/MarkWeak.h | |
parent | 0efbf18b80c261708da9ef61bcd420fa94cfed42 (diff) | |
download | haskell-9363f04d0ff22f3d898af35bb5432c4287e6dc9a.tar.gz |
Handle promotion failures when scavenging a WEAK (#11108)
Previously, we ignored promotion failures when evacuating fields of
a WEAK object. When a failure happens, this resulted in an WEAK object
pointing to another object in a younger generation, causing crashes.
I used the test case from #11746 to check that the fix is working.
However I haven't managed to produce a test case that quickly reproduces
the issue.
Test Plan: ./validate
Reviewers: austin, bgamari, simonmar
Reviewed By: simonmar
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2189
GHC Trac Issues: #11108
Diffstat (limited to 'rts/sm/MarkWeak.h')
-rw-r--r-- | rts/sm/MarkWeak.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/rts/sm/MarkWeak.h b/rts/sm/MarkWeak.h index bd0231d74c..aabb954496 100644 --- a/rts/sm/MarkWeak.h +++ b/rts/sm/MarkWeak.h @@ -24,6 +24,7 @@ void collectFreshWeakPtrs ( void ); void initWeakForGC ( void ); rtsBool traverseWeakPtrList ( void ); void markWeakPtrList ( void ); +void scavengeLiveWeak ( StgWeak * ); #include "EndPrivate.h" |