From: Simon Marlow Date: Fri, 10 Feb 2006 11:21:11 +0000 (+0000) Subject: STM fix from Tim Harris X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=a5bd056033e0f81e4d8ca30aa7c26cde3a3a132b;hp=6ff106616c1c98542df0a1763f0f9f655b2c8dd5;p=ghc-hetmet.git 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); --- 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.