black hole detection and concurrency

Simon Peyton-Jones simonpj at
Mon Dec 29 09:21:34 EST 2008

| I have a good theory on the latter symptom (the "thread killed"
| message). Sticking in some traces, as in my appended code, helped me
| to see what's going on. It seems to be exactly what you describe --
| the variable v is permanently bound to the exception it "evaluates"
| to.  Since the right hand True portion of the unamb evaluates more
| quickly, the spawned threads are killed and the left hand (the v)
| "evaluates" to "thread killed".

This is odd (to me).  The "permanently bound" stuff applies only to *synchronous* exceptions, which thread-killing is not.  Simon M will have more to say when he gets back


More information about the Glasgow-haskell-users mailing list