Handle promotion failures when scavenging a WEAK (#11108)
authorTakano Akio <tak@anoak.io>
Wed, 11 May 2016 12:45:29 +0000 (14:45 +0200)
committerBen Gamari <ben@smart-cactus.org>
Wed, 11 May 2016 12:46:48 +0000 (14:46 +0200)
commit9363f04d0ff22f3d898af35bb5432c4287e6dc9a
tree0e80d6c88760bf61ac29da655c1c3356c1c80545
parent0efbf18b80c261708da9ef61bcd420fa94cfed42
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
rts/sm/MarkWeak.c
rts/sm/MarkWeak.h
rts/sm/Scav.c