
On Tue, Sep 14, 2010 at 9:44 PM, Mitar
Hi!
On Tue, Sep 14, 2010 at 9:04 PM, Gregory Collins
wrote: That's surprising to me -- this is how we kill the Snap webserver (killThread the controlling thread...).
Yes. This does work. The only problem is that my main thread then kills child threads, which then start killing main thread again, which then again kills child threads and interrupt cleanup.
This sounds wrong. Why is the main thread sending more than one kill? Handlers for some exception shouldn't run more than once unless you set them up that way. Are you perhaps being tripped up by the issue whereby when the main thread dies, the RTS just shuts down even if other threads are running? You might find you need some kind of maybe MVar-driven mechanism to keep the main thread alive until all else is definitely dead. Maybe this behaviour should be considered a bug, I don't know. It would be nice if after a forkIO threads were effectively equal.