[Haskell-cafe] Re: Thread scheduling and GHC.Conc

Simon Marlow marlowsd at gmail.com
Fri Dec 19 04:43:38 EST 2008


Jake Foell wrote:
> using ghc v6.8.2
> Problem:
> I am creating a program that forks two other lightweight threads.  One
> of the forked threads seems to be stuck or dead after running
> successfully for a non-trivial amount of time.  I am receiving no
> error messages.
> Questions:
> What is the best way to diagnose this problem? (perhaps a ghc upgrade to
> a version that includes processStatus?)
> Does the runtime system ensure that no thread will starve for processor
> time?
> 
> My initial diagnosis:
> by looking at log files that this program produces, it seems that the
> thread in question is failing while receiving a response from a server.
> Here is a simplified exerpt:
>         h <- connectTo server port
>         appendFile file "Connection Established\n"
>         hPutStr h httpRequestString
>         hFlush h
>         reply <- hGetContents h
>         appendFile file reply
> If I look at the tail of file that is created, I see something similar
> to this:
>         ...
>         Connection Established
>         here is the response...
>         Connection Established
> Answers to my questions and/or any advice would be appreciated. thanks

You might be able to find your problem by compiling the program with -debug 
and running it with +RTS -Ds.  This produces debugging output from the 
scheduler - it's intended mainly for debugging the RTS and has a lot of 
info that won't make much sense to you, but it might help you find the 
problem.  If you're curious about what the RTS is doing, there are a host 
of other -D<something> debugging options available when you compile with 
-debug, use +RTS -? to list them.

Cheers,
	Simon



More information about the Haskell-Cafe mailing list