[Haskell-cafe] How to Kill Haskell
ecrockett0 at gmail.com
Tue Nov 18 14:38:43 UTC 2014
For the purposes of profiling a partially evaluated program, I'm interested
in knowing the best way to terminate a GHC program. This is useful for
profiling programs that take a long time to run, possibly as long as
forever. It appears that *if* the program can be terminated with a single
^c, then profiling information is written to output. Sometimes, a single ^c
doesn't kill the program, at not before I get impatient and hit ^c again.
Usually two ^c will kill the program, but then no profiling data is written
to output. As a simple example,
fib n = fib (n - 1) + fib (n - 2)
main = print $ fib 100
Compiling with -prof and running with +RTS -p, I can kill this program with
a *single* ^c in the first approximately 10 seconds of execution, but after
that only two ^c will do the job. Looking at my resources, this change
appears to coincide with the program using all of my physical memory and
moving to swap space, however that could also be coincidental.
Why does ^c work sometimes, but not other times for the same program? What
is the easiest way to ensure that profiling data will get printed when the
program does not terminate on its own?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe