Fail: thread killed

Simon Marlow
Thu, 8 Mar 2001 17:34:26 -0000

> Marcin 'Qrczak' Kowalczyk wrote:
> [snip]
> > Since the very purpose of killThread is to kill the damn thread,
> > I find it inconvenient to have to wrap any thread which is supposed
> > to be killable with Exception.catch to avoid the message. Worse:
> > it should use block and unblock, otherwise there is a small window
> > where killing the thread will still display the message.
> [snip]
> I agree with this.  I also find it mildly irritating having to
> catch exceptions to stop GHC informing me that it's just garbage
> collected a thread which is permanently deadlocked.

Ok, so which exceptions should be displayed?

  - Marcin says all async exceptions should be suppressed in
    child threads.

  - George says BlockedOnDeadMVar messages should also be
    suppressed (presumably only on child threads).

any others?

I'm not sure I agree that StackOverflow/HeapOverflow messages should be
suppressed.  It might be really confusing if your program just deadlocks
instead of completing, when what actually happened was one of the child
threads got a stack overflow and died silently.

I can see the point about ThreadKilled though.  There's only one way to
kill a thread, and that's with killThread, so you don't want to see a
message saying the thread was killed (except that the presence of the
message indicates that the thread was alive before it was killed ;-).