From a5bd056033e0f81e4d8ca30aa7c26cde3a3a132b Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Fri, 10 Feb 2006 11:21:11 +0000 Subject: [PATCH] STM fix from Tim Harris Fixes assertion failures with STM and -debug. Tim says: Sorry, it's a problem in how nested transactions are handled in non-SMP builds. It'll bite when trying to commit a nested transaction which has read from a TVar but not updated it. The call to validate_and_acquire_ownership in stmCommitNestedTransaction should be the same as that in stmCommitNestedTransaction, i.e.: result = validate_and_acquire_ownership(trec, (!use_read_phase), TRUE); --- ghc/rts/STM.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ghc/rts/STM.c b/ghc/rts/STM.c index f94cf15..d3283a9 100644 --- a/ghc/rts/STM.c +++ b/ghc/rts/STM.c @@ -999,7 +999,7 @@ StgBool stmCommitNestedTransaction(Capability *cap, StgTRecHeader *trec) { lock_stm(trec); et = trec -> enclosing_trec; - result = validate_and_acquire_ownership(trec, FALSE, TRUE); + result = validate_and_acquire_ownership(trec, (!use_read_phase), TRUE); if (result) { // We now know that all the updated locations hold their expected values. -- 1.7.10.4