summaryrefslogtreecommitdiff
path: root/libraries/base/tests/T13167.hs
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/base/tests/T13167.hs')
-rw-r--r--libraries/base/tests/T13167.hs29
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 ()