diff options
author | Simon Marlow <marlowsd@gmail.com> | 2013-11-21 12:25:30 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2013-11-21 13:27:34 +0000 |
commit | beaf8c370a25fdba1eb5d4aca820ea4677ade062 (patch) | |
tree | d4c057221b837dd5455657b45362f656355e956a /rts/CheckUnload.c | |
parent | e82fa82933e6984c5b9507a0d857b0c579bd0f46 (diff) | |
download | haskell-beaf8c370a25fdba1eb5d4aca820ea4677ade062.tar.gz |
CheckUnload needs to look at revertible_caf_list
Retained CAFs must keep an object file alive.
Diffstat (limited to 'rts/CheckUnload.c')
-rw-r--r-- | rts/CheckUnload.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/rts/CheckUnload.c b/rts/CheckUnload.c index d3fb8934b5..8692dea8bf 100644 --- a/rts/CheckUnload.c +++ b/rts/CheckUnload.c @@ -267,6 +267,13 @@ void checkUnload (StgClosure *static_objects) link = *STATIC_LINK(info, p); } + // CAFs on revertible_caf_list are not on static_objects + for (p = (StgClosure*)revertible_caf_list; + p != END_OF_STATIC_LIST; + p = ((StgIndStatic *)p)->static_link) { + checkAddress(addrs, p); + } + for (g = 0; g < RtsFlags.GcFlags.generations; g++) { searchHeapBlocks (addrs, generations[g].blocks); searchHeapBlocks (addrs, generations[g].large_objects); |