Blocking a task indefinitely in the RTS

Phil Ruffwind rf at rufflewind.com
Mon Jan 7 23:23:59 UTC 2019


Strange, how could the scheduler assume a deadlock if the MVar could be called from a closure that is still alive?  Can you show the code that you're testing?  

On Mon, Jan 7, 2019, at 14:09, Phyx wrote:
> Hi Phil,
> 
> Thanks for the reply, however that just gives me a forced deadlock removal
> as before.
> 
> new bound thread (1)
> cap 0: schedule()
> cap 0: running thread 1 (ThreadRunGHC)
> cap 0: thread 1 stopped (blocked on an MVar)
>         thread    1 @ 0000000003205388 is blocked on an MVar @
> 00000000032040c8 (TSO_DIRTY)
> deadlocked, forcing major GC...
> all threads:
> threads on capability 0:
> other threads:
>         thread    1 @ 0000000003205388 is blocked on an MVar @
> 00000000032040c8 (TSO_DIRTY)
> cap 0: starting GC
> 
> I don't believe any solution involving MVars will work for the non-threaded
> RTS. Though I'd love to be wrong here...
> 
> Regards,
> Tamar


More information about the ghc-devs mailing list