On Wed, Apr 4, 2012 at 6:37 AM, tsuraan
<tsuraan@gmail.com> wrote:
What sorts of things can cause a thread to get an asynchronous "thread
killed" exception? I've been seeing rare, inexplicable "thread
killed" messages in my Snap handlers for a long time, but they aren't
from Snap's timeout code. I recently upgraded to ghc 7.4.1, and that
caused the kills to happen a lot more often, but also gave me some
traceback capabilities. I tracked the most common kills down to
cryptohash's Crypto.Hash.Tiger.update function, but that's about as
That's probably not where the threadKill is being sent *from*, it's where your thread received it.
pure a FFI function can be, so I don't know how that would be causing
anything weird to happen. I also sometimes get the kills in the
Tiger.finalize function, and I get other ones in functions that I
haven't been able to track down yet. Given that the thread kills
aren't from Snap's timeout code (they happen in under a second, and I
have snap's timeouts turned to an insanely high value), what sort of
other things cause ThreadKilled exceptions?
It's hard to rule Snap timeouts out; try building snap-core with the "-fdebug" flag and running your app with "DEBUG=1", you'll get a spew of debugging output from Snap on stderr.