diff options
Diffstat (limited to 'libraries/base/tests/T13167.hs')
-rw-r--r-- | libraries/base/tests/T13167.hs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/libraries/base/tests/T13167.hs b/libraries/base/tests/T13167.hs new file mode 100644 index 0000000000..e41104cde9 --- /dev/null +++ b/libraries/base/tests/T13167.hs @@ -0,0 +1,29 @@ +import Data.IORef +import Control.Monad +import Control.Exception +import Control.Concurrent.MVar +import System.Mem + +main :: IO () +main = do + run + run + run + run + m <- newEmptyMVar + quit m + performMajorGC + takeMVar m + +run :: IO () +run = do + ref <- newIORef () + void $ mkWeakIORef ref $ do + putStr "." + throwIO $ ErrorCall "failed" + +quit :: MVar () -> IO () +quit m = do + ref <- newIORef () + void $ mkWeakIORef ref $ do + putMVar m () |