Add -fghci-leak-check to check for space leaks

Authored by simonmar on May 17 2018, 9:22 AM.


Trac Issues

(re-applying this patch now that D4659 is committed)

Space leaks in GHCi emerge from time to time and tend to come back again
after they get fixed. This is an attempt to limit regressions by

  • adding a reliable detection for some classes of space leaks in GHCi
  • turning on leak checking for all GHCi tests in the test suite, so that we'll notice if the leak appears again.

The idea for detecting space leaks is quite simple:

  • find some data that we expect to be GC'd later, make a weak pointer to it
  • when we expect the data to be dead, do a performGC and then check the status of the weak pointer.

It would be nice to apply this trick to lots of things in GHC,
e.g. ensuring that HsSyn is not retained after the desugarer, or
ensuring that CoreSyn from the previous simplifier pass is not retained.

Test Plan


simonmar created this revision.May 17 2018, 9:22 AM
simonmar updated this revision to Diff 16468.May 17 2018, 9:25 AM

retrying; database failure the first time