Program develops space leak with -fprof-auto
This program seems to use constant memory when compiled with only -prof
, but it uses increasing amounts of memory when compiled with -prof
and -fprof-auto
. I observed the behavior with GHC 8.0.1, 7.10.3, 7.8.4, 7.6.3, and 7.4.2, but not 7.0.4 (with -auto-all
).
import System.Environment
main :: IO ()
main = do
n <- (read . head) `fmap` getArgs
case f [0..(n::Int)] 0 of
(xs, s) -> print xs >> print s
f :: [Int] -> Int -> ([Int], Int)
f [] s = ([], s)
f (x:xs) s =
let (xs', s') = f xs (x + s)
in (x + s : xs', s')
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.0.1
$ ghc Main.hs -prof
[1 of 1] Compiling Main ( Main.hs, Main.o )
Linking Main ...
$ /run/current-system/sw/bin/time ./Main 5000000 > /dev/null
2.80user 0.01system 0:02.82elapsed 100%CPU (0avgtext+0avgdata 6028maxresident)k
0inputs+0outputs (0major+661minor)pagefaults 0swaps
$ ghc Main.hs -prof -fprof-auto
[1 of 1] Compiling Main ( Main.hs, Main.o )
Linking Main ...
$ /run/current-system/sw/bin/time ./Main 5000000 > /dev/null
4.03user 0.35system 0:04.38elapsed 100%CPU (0avgtext+0avgdata 1574348maxresident)k
0inputs+0outputs (0major+392857minor)pagefaults 0swaps
[[Image(no-fprof-auto.png)]] [[Image(fprof-auto.png)]]
Trac metadata
Trac field | Value |
---|---|
Version | 7.4.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Profiling |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |