Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC Commits: f93d523c by Luite Stegeman at 2026-10-15T04:56:34-04:00 testsuite: Use mkWeakMVar in memo001/memo002 mkWeakPtr in the memo001/memo001 tests created weak pointers with the MVar box as the key, which is fragile in the presence of optimization. The fix is using mkWeakMVar, keying on the primitive MVar# instead. Fixes #27924 and #27396 - - - - - 3 changed files: - libraries/base/tests/Memo1.lhs - libraries/base/tests/Memo2.lhs - libraries/base/tests/all.T Changes: ===================================== libraries/base/tests/Memo1.lhs ===================================== @@ -13,10 +13,10 @@ module Memo1 where import System.Mem.StableName ( StableName, makeStableName, hashStableName ) -import System.Mem.Weak ( Weak, mkWeakPtr, mkWeak, deRefWeak, finalize ) +import System.Mem.Weak ( Weak, mkWeak, deRefWeak, finalize ) import Data.Array.IO ( IOArray, newArray, readArray, writeArray ) import System.IO.Unsafe ( unsafePerformIO ) -import Control.Concurrent.MVar ( MVar, newMVar, putMVar, takeMVar ) +import Control.Concurrent.MVar ( MVar, newMVar, putMVar, takeMVar, mkWeakMVar ) \end{code} ----------------------------------------------------------------------------- @@ -78,7 +78,7 @@ lazyMemoSized size f = let (table,weak) = unsafePerformIO ( do { tbl <- newArray (0,size) [] ; mvar <- newMVar (size,tbl) - ; weak <- mkWeakPtr mvar (Just (table_finalizer tbl size)) + ; weak <- mkWeakMVar mvar (table_finalizer tbl size) ; return (mvar,weak) }) in memo' f table weak ===================================== libraries/base/tests/Memo2.lhs ===================================== @@ -13,10 +13,10 @@ module Memo2 where import System.Mem.StableName ( StableName, makeStableName, hashStableName ) -import System.Mem.Weak ( Weak, mkWeakPtr, mkWeak, deRefWeak, finalize ) +import System.Mem.Weak ( Weak, mkWeak, deRefWeak, finalize ) import Data.Array.IO ( IOArray, newArray, readArray, writeArray ) import System.IO.Unsafe ( unsafePerformIO ) -import Control.Concurrent.MVar ( MVar, newMVar, putMVar, takeMVar ) +import Control.Concurrent.MVar ( MVar, newMVar, putMVar, takeMVar, mkWeakMVar ) \end{code} ----------------------------------------------------------------------------- @@ -78,7 +78,7 @@ lazyMemoSized size f = let (table,weak) = unsafePerformIO ( do { tbl <- newArray (0,size) [] ; mvar <- newMVar (size,tbl) - ; weak <- mkWeakPtr mvar (Just (table_finalizer tbl size)) + ; weak <- mkWeakMVar mvar (table_finalizer tbl size) ; return (mvar,weak) }) in memo' f table weak ===================================== libraries/base/tests/all.T ===================================== @@ -135,8 +135,7 @@ test('list003', when(fast(), skip), compile_and_run, ['']) test('isSuffixOf', normal, compile_and_run, ['']) test('memo001', [extra_files(['Memo1.lhs']), - extra_run_opts('+RTS -A10k -RTS'), - expect_broken_for(27396, opt_ways)], multimod_compile_and_run, + extra_run_opts('+RTS -A10k -RTS')], multimod_compile_and_run, ['memo001', '']) test('memo002', [extra_files(['Memo2.lhs']), View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/f93d523cf3f28e8a7fe8b8bfef8037f4... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/f93d523cf3f28e8a7fe8b8bfef8037f4... You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help