[Haskell-cafe] GHC.Conc.threadStatus - documentation of ThreadDied :: ThreadStatus

Ben Gamari ben at smart-cactus.org
Tue Mar 8 04:04:12 UTC 2022


Olaf Klinke <olf at aatal-apotheke.de> writes:

> Dear Cafe, 
>
> I had expected to see ThreadDied in the small example below.  
> But when I compile with 
> ghc --make -threaded -with-rtsopts=-N2
> The output is:
>
> threadStatus: user error (child thread is crashing!)
> The status of my child is:
> ThreadFinished
>
> The output is not really a lie. But how do I determine whether a child
> thread has exited normally or not? Wouldn't you say a call to fail (or
> any other throwIO) should count as ThreadDied? 
>
> The documentation of GHC.Conc.forkIO says:
> "... passes all other exceptions to the uncaught exception handler."
> and the documentation for GHC.Conc.ThreadStatus says:
> ThreadDied -- the thread received an uncaught exception
>
> One can provoke ThreadDied by using throwTo from the parent thread. So
> the emphasis in the documentation of ThreadDied should be on the word
> "received".
> This is a case of misleading documentation, in my humble opinion.   
> The constructor should not be named ThreadDied because that suggests
> inclusion of internal reasons. 
>
Thanks for reporting this, Olaf! Could you open a GHC ticket? [1]

Cheers,

- Ben

[1] https://gitlab.haskell.org/ghc/ghc/-/issues/new
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20220307/59d7ddd6/attachment.sig>


More information about the Haskell-Cafe mailing list