X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRetainerProfile.c;h=07a3db435b5847a7dda97627a263422bf6175ea8;hb=c5b76e6f1d2151dd76a2e6477c543a4dd1efca46;hp=d14ba06bf6ab0fc6b6c7077673ee2daf3779fc13;hpb=70a2431f90fa932733ce015714ef7848640ed48f;p=ghc-hetmet.git 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: