[ ghc-Bugs-1183455 ] Possible error using concurrency

SourceForge.net noreply at sourceforge.net
Thu Apr 14 21:12:40 EDT 2005


Bugs item #1183455, was opened at 2005-04-14 18:12
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=108032&aid=1183455&group_id=8032

Category: libraries (other)
Group: 6.4
Status: Open
Resolution: None
Priority: 5
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Nobody/Anonymous (nobody)
Summary: Possible error using concurrency

Initial Comment:
{- 
     Error description:

     In windows xp sp2 with ghc-6-4, GHCi ends with 
        "internal error: deadlock: main thread blocked in a 
strange way"
     In RedHat Linux, it just blocks.
     A probably cause, it's that the scheduler hasn't yet 
run oneThread
     before the second putTMVAr, because no memory 
allocation has been
     requested.
     Try on the calls forkIO and runInUnboundThread.

     contact info: leonelfl at yahoo.com
-}
import Control.Concurrent
import Control.Concurrent.STM
import Control.Concurrent.STM.TMVar
main = do
   stopFlag <- atomically (do t <- newEmptyTMVar; 
return t)
   threadDelay 100001
   --t <- forkIO $ oneThread stopFlag   -- this line would 
work fine...
   -- but the following one doesn't work.
   runInUnboundThread $ oneThread stopFlag
   threadDelay 100002
   atomically ( putTMVar stopFlag True )
   threadDelay 500003
   atomically ( putTMVar stopFlag False )
   return ()

oneThread stopFlag = do
   go <- atomically ( takeTMVar stopFlag )
   if  go  then  do putStrLn "-" 
                    oneThread stopFlag
	   else  return ()

   


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=108032&aid=1183455&group_id=8032



More information about the Glasgow-haskell-bugs mailing list