[Haskell-cafe] STM and garbage collector

Roman Cheplyaka roma at ro-che.info
Sun Oct 18 10:42:57 UTC 2015


On 10/18/2015 12:45 PM, Tomas Carnecky wrote:
> Who throws the exception?

The RTS.

> Documentation of `throwTo` sais that the
> calling thread is blocked until the exception is delivered. If the
> target thread has async exceptions masked then the exception is never
> delivered.

First, to attempt to cause that block, you'd have to use
uninterruptibleMask, because the ordinary mask still lets the exceptions
through when the thread is blocked.

Second, in the case of BlockedIndefinitelyOnSTM and similar conditions,
the RTS doesn't go through throwTo, but raises the exception directly,
so even uninterruptibleMask won't hold it. See resurrectThreads in
rts/Schedule.c.

> Does that also mean a blocked thread which has async exceptions masked
> is, essentially, a resource leak?
> 
> On Sun, Oct 18, 2015 at 5:23 AM Michael Sloan <mgsloan at gmail.com
> <mailto:mgsloan at gmail.com>> wrote:
> 
>     In this case, the GC will indeed find that no one has a reference to
>     the thread.  However, instead of garbage collecting the thread, the
>     BlockedIndefinitely exception is thrown to it.  So, it resumes
>     execution of the thread with that exception.
> 
>     This also applies to threads blocked on MVars.
> 
>     -Michael
> 
>     On Sat, Oct 17, 2015 at 9:11 AM, Tomas Carnecky
>     <tomas.carnecky at gmail.com <mailto:tomas.carnecky at gmail.com>> wrote:
> 
>         If a thread is blocking indefinitely in an STM transaction
>         (reading from a queue to which nobody else has a reference and
>         thus can not write into), is the runtime smart enough to GC the
>         thread? Or do I have to kill the thread manually?
> 
>         _______________________________________________
>         Haskell-Cafe mailing list
>         Haskell-Cafe at haskell.org <mailto:Haskell-Cafe at haskell.org>
>         http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> 
> 
> 
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20151018/69e147a0/attachment.sig>


More information about the Haskell-Cafe mailing list