[Haskell] crash unsafeperformio stm

Simon Peyton-Jones simonpj at microsoft.com
Fri Jul 14 08:02:36 EDT 2006


[Redirecting to GHC users]

A crash is bad, and the HEAD reports an error in a civilised way.  It is
indeed illegal to use atomically inside an  unsafePerformIO.

I've also committed a fix to the documentation of atomically to mention
this point.  In general, the documentation of STM is very thin -- we
would welcome someone to improve it.

Simon

| -----Original Message-----
| From: haskell-bounces at haskell.org [mailto:haskell-bounces at haskell.org]
On Behalf Of Johannes Goetz
| Sent: 12 July 2006 04:50
| To: Haskell Mailing List
| Subject: [Haskell] crash unsafeperformio stm
| 
| hi folks,
| 
| i'm using ghc6 (apt-get install ghc6) on debian31. as far is i
| understand, the following program shouldn't crash. can somebody tell
me
| why it does? thanks a lot. johannes.
| 
| module Main(main) where
| 
| import Control.Concurrent.STM
| import System.IO.Unsafe
| 
| {-# NOINLINE a #-}
| a :: TMVar Int
| a = unsafePerformIO $ atomically $ newTMVar 123
| 
| main = do
|  atomically $ takeTMVar a >>= putTMVar a
| 
| ghc --make -fno-cse Test.hs -o test
| ./test
| Segmentation fault
| 
| _______________________________________________
| Haskell mailing list
| Haskell at haskell.org
| http://www.haskell.org/mailman/listinfo/haskell


More information about the Glasgow-haskell-users mailing list