[GHC] #4001: Implement an atomic readMVar

GHC ghc-devs at haskell.org
Tue Jul 9 19:55:31 CEST 2013


#4001: Implement an atomic readMVar
----------------------------+----------------------------------------------
        Reporter:           |            Owner:  ezyang
  simonmar                  |           Status:  new
            Type:  task     |        Milestone:  7.6.2
        Priority:  low      |          Version:  6.12.2
       Component:  Runtime  |         Keywords:
  System                    |     Architecture:  Unknown/Multiple
      Resolution:           |       Difficulty:  Moderate (less than a day)
Operating System:           |       Blocked By:
  Unknown/Multiple          |  Related Tickets:
 Type of failure:           |
  None/Unknown              |
       Test Case:           |
        Blocking:           |
----------------------------+----------------------------------------------

Comment (by ezyang):

 While testing, I discovered this program spins infinitely when run through
 ghci (all the compiled ways are fine):

 {{{
 module Main where

 import GHC.MVar
 import Control.Concurrent

 main = do
     m <- newEmptyMVar
     sync <- newEmptyMVar
     let f = atomicReadMVar m
     t1 <- forkIO (f >> error "FAILURE")
     t2 <- forkIO (f >> putMVar sync ())
     killThread t1
     putMVar m (0 :: Int)
     atomicReadMVar sync
 }}}

 Does ghci have any sort of special MVar handling?

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/4001#comment:19>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the ghc-tickets mailing list