X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FRetainerProfile.c;fp=rts%2FRetainerProfile.c;h=07a3db435b5847a7dda97627a263422bf6175ea8;hp=d14ba06bf6ab0fc6b6c7077673ee2daf3779fc13;hb=129e7b91d1cd0fc583b6bba01e39d10c30db18be;hpb=f278f0676579f67075033a4f9857715909c4b71e diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c index d14ba06..07a3db4 100644 --- a/rts/RetainerProfile.c +++ b/rts/RetainerProfile.c @@ -1054,6 +1054,10 @@ isRetainer( StgClosure *c ) case PAP: // indirection case IND_PERM: + // IND_STATIC used to be an error, but at the moment it can happen + // as isAlive doesn't look through IND_STATIC as it ignores static + // closures. See trac #3956 for a program that hit this error. + case IND_STATIC: case BLACKHOLE: // static objects case CONSTR_STATIC: @@ -1069,8 +1073,6 @@ isRetainer( StgClosure *c ) // // Error case // - // IND_STATIC cannot be *c, *cp, *r in the retainer profiling loop. - case IND_STATIC: // CONSTR_NOCAF_STATIC // cannot be *c, *cp, *r in the retainer profiling loop. case CONSTR_NOCAF_STATIC: