[Haskell-cafe] How to Kill Haskell

Eric Crockett 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...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20141118/97bc30d9/attachment.html>

More information about the Haskell-Cafe mailing list